C# 绑定Listview的文本块';s GridView';s数据网格单元
我有一个模型对象的C# 绑定Listview的文本块';s GridView';s数据网格单元,c#,xaml,mvvm,data-binding,C#,Xaml,Mvvm,Data Binding,我有一个模型对象的可观察集合,我正试图在列表视图中的网格视图的DataGridCells中显示它。对于这个简化的示例,假设我的模型对象都有“MyString”,并且我试图在每行的DataGridCell内部的TextBlock中显示“MyString” 当observateCollection添加或删除这些模型对象时,ListView显示正确的行数,但单个单元格为空。我怎样才能把它们绑好?我应该使用DataContext还是ItemSource,如果是,在哪里?下面是一个这样的绑定尝试的单列示例
可观察集合
,我正试图在列表视图
中的网格视图
的DataGridCells
中显示它。对于这个简化的示例,假设我的模型对象都有“MyString”,并且我试图在每行的DataGridCell
内部的TextBlock
中显示“MyString”
当observateCollection
添加或删除这些模型对象时,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>
ViewModel:
ObservableCollection<MyModel> MyObservableCollection = new ObservableCollection<MyModel>();
public void AddModelToCollection()
{
MyModel mm = new MyModel();
mm.MyString = "HELLO WORLD";
MyObservableCollection.Add(mm);
}
ObservableCollection MyObservableCollection=新的ObservableCollection();
public void AddModelToCollection()
{
MyModel mm=新的MyModel();
mm.MyString=“你好,世界”;
MyObservableCollection.Add(毫米);
}
公共字符串MyString代码>是一个字段,而不是属性。不能绑定到字段。只能绑定到属性
private string _myString;
public string MyString
{
get
{
return _myString;
}
set
{
_myString = value;
OnPropertyChanged("MyString");
}
}
我将把OnPropertyChanged
的实现留给您
澄清
这是一个:
注意它有一个getter和setter。编译器将其转换为两种方法,一种用于获取值,另一种用于设置值
这是一个:
注意,它没有getter或setter。它只是指向堆栈上某个值的指针
重要的是:
在WPF中,绑定不适用于字段。它们仅适用于属性
因此,在尝试绑定字段之前设置字段的值并不重要。绑定不会查找字段,因此不会看到它。公共字符串MyString代码>是一个字段,而不是属性。不能绑定到字段。只能绑定到属性
private string _myString;
public string MyString
{
get
{
return _myString;
}
set
{
_myString = value;
OnPropertyChanged("MyString");
}
}
我将把OnPropertyChanged
的实现留给您
澄清
这是一个:
注意它有一个getter和setter。编译器将其转换为两种方法,一种用于获取值,另一种用于设置值
这是一个:
注意,它没有getter或setter。它只是指向堆栈上某个值的指针
重要的是:
在WPF中,绑定不适用于字段。它们仅适用于属性
因此,在尝试绑定字段之前设置字段的值并不重要。绑定不会查找字段,因此不会看到它。公共字符串MyString代码>是一个字段,而不是属性。不能绑定到字段。只能绑定到属性
private string _myString;
public string MyString
{
get
{
return _myString;
}
set
{
_myString = value;
OnPropertyChanged("MyString");
}
}
我将把OnPropertyChanged
的实现留给您
澄清
这是一个:
注意它有一个getter和setter。编译器将其转换为两种方法,一种用于获取值,另一种用于设置值
这是一个:
注意,它没有getter或setter。它只是指向堆栈上某个值的指针
重要的是:
在WPF中,绑定不适用于字段。它们仅适用于属性
因此,在尝试绑定字段之前设置字段的值并不重要。绑定不会查找字段,因此不会看到它。公共字符串MyString代码>是一个字段,而不是属性。不能绑定到字段。只能绑定到属性
private string _myString;
public string MyString
{
get
{
return _myString;
}
set
{
_myString = value;
OnPropertyChanged("MyString");
}
}
我将把OnPropertyChanged
的实现留给您
澄清
这是一个:
注意它有一个getter和setter。编译器将其转换为两种方法,一种用于获取值,另一种用于设置值
这是一个:
注意,它没有getter或setter。它只是指向堆栈上某个值的指针
重要的是:
在WPF中,绑定不适用于字段。它们仅适用于属性
因此,在尝试绑定字段之前设置字段的值并不重要。绑定不会查找字段,因此不会看到它。威尔是对的,您的模型类需要将MyString
作为属性而不是字段
您可以绑定到任何公共语言运行库(CLR)对象的公共属性、子属性以及索引器。绑定引擎使用CLR反射来获取属性的值。或者,实现ICustomTypeDescriptor或具有注册的TypeDescriptionProvider的对象也可以使用绑定引擎。
有关如何实现可以用作绑定源的类的更多信息,请参阅本主题后面的为绑定源实现类
Will是对的,您的模型类需要将MyString
作为属性而不是字段
您可以绑定到任何公共语言运行库(CLR)对象的公共属性、子属性以及索引器。绑定引擎使用CLR反射来获取属性的值。或者,实现ICustomTypeDescriptor或具有注册的TypeDescriptionProvider的对象也可以使用绑定引擎。
有关如何实现可以用作绑定源的类的更多信息,请参阅本主题后面的为绑定源实现类
Will是对的,您的模型类需要将MyString
作为属性而不是字段
您可以绑定到任何公共语言运行库(CLR)对象的公共属性、子属性以及索引器。绑定引擎使用CLR反射来获取属性的值。或者,实现ICU的对象
public class MyModel : INotifyPropertyChanged
{
private string _myString;
public string MyString
{
get
{
return _myString;
}
set
{
_myString = value;
OnPropertyChanged("MyString");
}
}
}