ObservableCollection绑定无法按预期工作

时间:2018-08-31 07:34:20

标签: c# wpf

我在绑定ObservableCollections时遇到问题。其他属性(字符串)也可以。这是我的代码:

MainWindow.xaml

<StackPanel>
    <TextBlock Text="{Binding Title}"/>
    <ItemsControl ItemsSource="{Binding Data}">
        <TextBlock Text="{Binding B}"/>
    </ItemsControl>
</StackPanel>

MainWindow.xaml.cs

public MainWindow()
{
   InitializeComponent();
   DataContext = new MainWindowVm();
}

MainWindowVm

class MainWindowVm
{
    public ObservableCollection<A> Data;
    public string Title { get; set; } = "HELLO WORLD";
    public MainWindowVm()
    {
        Data = new ObservableCollection<A>() {new A() {B = "X"}, new A() {B = "X"}};
    }
}

class A
{
    public string B { get; set; }
}

结果 enter image description here

我在做什么错了?

1 个答案:

答案 0 :(得分:3)

好,就像其他人已经提到的那样,您需要将Data字段更改为属性。

public ObservableCollection<A> Data { get; set; }

摆脱错误

  

在使用ItemsSource之前,Items集合必须为空。

将您的XAML更改为:

 <StackPanel>
    <TextBlock Text="{Binding Title}"/>
    <ItemsControl ItemsSource="{Binding Data}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding B}"/>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</StackPanel>