gpt4 book ai didi

c# - 绑定(bind) Listview 的 GridView 的 DataGridCell 的 TextBlock

转载 作者:行者123 更新时间:2023-12-03 10:58:29 25 4
gpt4 key购买 nike

我有一个 ObservableCollection我试图在 DataGridCells 中显示的模型对象的 GridViewListView .对于这个简化的例子,假设我的模型对象都有“MyString”,并且我试图在 TextBlock 中显示“MyString”。每行的 DataGridCell 内.

作为 ObservableCollection添加或删除这些模型对象,ListView显示正确的行数,但是各个单元格为空。如何正确绑定(bind)它们?我应该使用 DataContextItemSource ,如果是这样,在哪里?这是一个此类绑定(bind)尝试的单列示例。

<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;
}

View 模型:
ObservableCollection<MyModel> MyObservableCollection = new ObservableCollection<MyModel>();

public void AddModelToCollection()
{
MyModel mm = new MyModel();
mm.MyString = "HELLO WORLD";
MyObservableCollection.Add(mm);
}

最佳答案

public string MyString;是一个字段,而不是一个属性。您不能绑定(bind)到字段。您只能绑定(bind)到属性。

private string _myString;
public string MyString
{
get
{
return _myString;
}
set
{
_myString = value;
OnPropertyChanged("MyString");
}
}
我将离开 OnPropertyChanged 的实现给你。
澄清
这是 PROPERTY :
public string DERP { get; set; } 
请注意,它有一个 getter 和一个 setter。编译器将其转换为两种方法,一种用于获取值,另一种用于设置值。
这是 FIELD :
public string HERP;
请注意,它没有 getter 或 setter。它只是一个指向堆栈上的值的指针。
这是重要的一点:
在 WPF 中,绑定(bind)不适用于 领域 .他们只适用于 属性(property)
因此,在尝试绑定(bind)字段之前设置字段的值并不重要。 Binding 不会寻找字段,因此不会看到它。

关于c# - 绑定(bind) Listview 的 GridView 的 DataGridCell 的 TextBlock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29989084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com