【问题标题】:Is Binding ListBox to Collection<State> possible in Silverlight?在 Silverlight 中是否可以将 ListBox 绑定到 Collection<State>?
【发布时间】:2012-08-07 12:36:26
【问题描述】:

在silverlight 中是否允许对collection&lt;*&gt; 进行数据绑定?因为我做了以下,没有任何反应

<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&lt;State&gt; 类型的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;

注意: 我看到accordian 标题在每个accordian 标题中显示了国家名称,但是 Listbox 没有与州数据绑定。

【问题讨论】:

  • 请显示国家代码+数据上下文的设置方式。
  • @ken2k 添加了更多代码来查找问题

标签: silverlight binding silverlight-4.0 listbox itemsource


【解决方案1】:

请将States设为完整的财产,这将起作用。

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

    public string Name { get; set; }
}

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

干杯! 维诺德

【讨论】:

  • 让我试试那个Vinod。但是集合不应该被迭代而不是获取或设置吗?
  • 是的,但首先它会寻找 get 然后它会迭代
  • 你知道这是怎么回事,ItemsSource="{Binding States,BindsDirectlyToSource=True}"
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-18
    • 2011-03-12
    • 1970-01-01
    • 2010-10-15
    • 2011-04-08
    • 2011-08-02
    • 1970-01-01
    • 2010-10-24
    相关资源
    最近更新 更多