【发布时间】:2025-12-15 20:50:01
【问题描述】:
我对 WPF 很陌生。我正在尝试将 DataGrid 中的一行绑定到属性,以便在单击该行时设置该属性。绑定到 DataGrid 的 ItemsSource 是 Field 类型的对象的 ObservableCollection。
我尝试绑定到 DataGrid 上的 SelectedItem 属性,但没有调用该属性。我使用几乎相同的代码绑定到 ComboBox 的 SelectedItem,这工作正常。有什么我不知道的区别吗?
<ComboBox ItemsSource="{Binding RecordTypes}" SelectedItem="{Binding SelectedRecordType}" ...
<DataGrid ItemsSource="{Binding Fields}" SelectedItem="{Binding SelectedField}" ...
在我的 ViewModel 中:
private Field SelectedField
{
get
{
return _selectedField;
}
set
{
_selectedField = value;
}
}
(稍后我将使用自动属性,它目前只是这样设置,以便在设置属性时我可以中断)。
我不确定它是否有区别,但 DataGrid 由 2 个 DataGridTextColumns 和一个 DataGridTemplateColumn 组成,其中包含一个复选框。
有人有什么想法吗?非常感谢任何建议。
为了确认,我想听一行点击的原因是我可以在点击一行时选中复选框。如果有更好的解决方案,请告诉我。
【问题讨论】:
-
我从未绑定到标记为私有的属性,我相信它必须是公共属性才能绑定到 UI。您的 ObservableCollection 是否也用作 Field 类型对象的 ItemsSource?
-
我认为您还需要设置列绑定。
-
请检查您的输出窗口是否有任何绑定错误。我不确定,但您需要为您的财产实施 INotifyPropertyChanged。