我有ObservableCollection
个模型对象,我试图在DataGridCells
GridView
ListView
中显示这些对象。对于这个简化的例子,让我们说我的模型对象都有" MyString,"并且我试图展示" MyString"在每行的TextBlock
内DataGridCell
。
当ObservableCollection
添加或删除这些模型对象时,ListView
显示正确的行数,但单个单元格为空。我如何正确绑定它们?我应该使用DataContext
还是ItemSource
,如果是,请问在哪里?这是一个这样的绑定尝试的单列示例。
<ListView ItemsSource="{Binding MyObservableCollection}">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumnHeader Content="My String Data" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<DataGridCell>
<TextBlock Text="{Binding Path=MyString}">
</TextBlock>
</DataGridCell>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
编辑:Per Michal Ciechan,我已经在我的模型课上实现了INotifyPropertyChanged
,但它似乎没有改变任何东西。然而,一旦他们进入集合中,我实际上不会更改这些对象上的字段,因此这可能不是正确的方法。这是一些示例代码。
模特:
public class MyModel : INotifyPropertyChanged
{
public string MyString;
public event PropertyChangedEventHandler PropertyChanged;
}
ViewModel:
ObservableCollection<MyModel> MyObservableCollection = new ObservableCollection<MyModel>();
public void AddModelToCollection()
{
MyModel mm = new MyModel();
mm.MyString = "HELLO WORLD";
MyObservableCollection.Add(mm);
}