如何将StackPanel绑定到非ObservableCollection?

时间:2015-10-14 11:40:02

标签: c# wpf xaml data-binding

<StackPanel Orientation="Vertical" x:Name="stackPanel">
     <ItemsControl ItemsSource="{Binding C}">
          <ItemsControl.ItemTemplate>
             <DataTemplate>
                  <TextBlock Foreground="Black" Text="{Binding prop1}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
             </DataTemplate>
         </ItemsControl.ItemTemplate>
     </ItemsControl>
</StackPanel>

我将此堆栈面板绑定到包含此代码的列表

 List<C> list = new List<C>();
 for (int i = 0; i < 100; i++)
 {
     list.Add(new C() { prop1 = "prop" });
 }
 stackPanel.DataContext = list;

没有任何反应。我们是否必须始终使用ObservableCollection s?或者代码还有什么问题?

2 个答案:

答案 0 :(得分:2)

表达式UPDATE `tries` SET `tries` = `tries` + 1 WHERE `ip` = '127.0.0.1'; 没有意义,因为您将列表本身放入DataContext中。然后当然没有属性{Binding C}

您应该将其替换为:

C

也就是说,你实际上并没有将StackPanel绑定到items集合,而是StackPanel中的ItemsControl。如果您打算使用StackPanel作为ItemsControl的<ItemsControl ItemsSource="{Binding}"> ,您应该这样写:

ItemsPanel

并像这样设置ItemsSource:

<ItemsControl x:Name="itemsControl">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Vertical"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Foreground="Black" Text="{Binding prop1}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

答案 1 :(得分:2)

删除C ItemsControl ItemsSource中的<ItemsControl ItemsSource="{Binding}"> ,如下所示:

wp_check_password