是否可以在Silverlight中将ListBox绑定到Collection <state>?</state>

时间:2012-08-07 12:36:26

标签: silverlight binding silverlight-4.0 listbox itemsource

在silverlight中是否允许数据绑定到collection<*>?因为我做了以下,没有任何反应

<SilverlightToolkit:Accordion Name="ToolboxCategories" SelectionMode="ZeroOrMore">
                <SilverlightToolkit:Accordion.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Name}"></TextBlock>
                    </DataTemplate>
                </SilverlightToolkit:Accordion.ItemTemplate>
                <SilverlightToolkit:Accordion.ContentTemplate>
                    <DataTemplate>
                        <ListBox x:Name="CategoryControls" ItemsSource="{Binding States}" BorderThickness="0">
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <Canvas>
                                        <TextBlock Text="{Binding Name}"></TextBlock>
                                    </Canvas>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </DataTemplate>
                </SilverlightToolkit:Accordion.ContentTemplate>
            </SilverlightToolkit:Accordion>

其中Country是包含类型为Collection<State>

的States属性的类

国家

Public Class Country
{
  Public Collection<State> States;

  Public string Name{get;set;}
}

国家

Public Class State
{
  Public string Name{get;set;}
}

Xaml.cs

List<Country> countries = DAL.GetCountries();

ToolboxCategories.ItemSource = countries;

注意: 我看到手风琴标题显示每个手风琴标题中的国家名称,但是Listbox不是数据绑定状态。

2 个答案:

答案 0 :(得分:0)

请将各州作为完整财产,这将有效。

 public class Country
{
    public Collection<State> States { get; set; }

    public string Name { get; set; }
}

因为当你在内部设置Binding时,它会查找对象的get_Property方法,而你没有将state作为属性,这就是它没有显示的原因。我希望这可以帮助你摆脱这个问题。

干杯! 维诺德

答案 1 :(得分:0)

在处理Silverlight中作为数据绑定控件的数据源的类时。您有时需要使用以下代码进行数据绑定

ItemsSource="{Binding States,BindsDirectlyToSource=True}"