gpt4 book ai didi

c# - WPF:绑定(bind)到 DataGrid 中行的 SelectedItem

转载 作者:行者123 更新时间:2023-11-30 17:50:28 24 4
gpt4 key购买 nike

我是 WPF 的新手。我正在尝试将 DataGrid 中的一行绑定(bind)到属性,以便在单击该行时设置该属性。绑定(bind)到 DataGrid 的 ItemsSource 是 Field 类型对象的 ObservableCollection。

我已尝试绑定(bind)到 DataGrid 上的 SelectedItem 属性,但未调用该属性。我使用几乎相同的代码绑定(bind)到 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 组成。

有人有什么想法吗?如果有任何建议,我将不胜感激。

确认一下,我想听点击一行的原因是这样我就可以在点击一行时选中复选框。如果对此有更好的解决方案,请告诉我。

最佳答案

你需要让它成为双向绑定(bind):

SelectedItem="{Binding SelectedField,Mode=TwoWay}"

将 View 中的更改(用户选择一个项目,SelectedItem 更改)传播回 View 模型(“SelectedField”属性)。

另外,正如@KevinDiTraglia指出的,您需要确保viewmodel属性SelectedFieldpublic,而不是private,否则绑定(bind)将无法访问 setter/getter / setter/getter 。

关于c# - WPF:绑定(bind)到 DataGrid 中行的 SelectedItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20712508/

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