gpt4 book ai didi

wpf - 使用 WPF/MVVM 从网格中的复选框获取更改事件?

转载 作者:行者123 更新时间:2023-12-02 12:17:26 32 4
gpt4 key购买 nike

我有一个数据集,它本质上是一个对象列表,其中包含绑定(bind)到 DataGrid(具体来说是 DXGrid)的 bool 属性。我试图让 IsChecked 属性在单击复选框时填充。对于独立文本框,我将使用 Binding 的 UpdateSourceTrigger 选项,但至少在 DXGrid 中,这似乎不可用。事实上,我必须失去复选框的焦点才能更新属性。

有什么想法吗?

假设下面的 RaisePropertyChanged 函数是 INotifyPropertyChanged 的​​实现。

数据对象

public class MyObject
{
bool _isChecked;
string _name;
int _id;

public MyObject(OtherObject oo)
{
_name = oo.Name;
_id = oo.ID;
}

public int ID
{ get { return _id; }}

public string Name
{ get { return _name; }}

public bool IsChecked
{
get { return _isChecked; }
set
{
if (value == _isChecked)
return;
_isChecked = value;
RaisePropertyChanged("IsChecked");
}
}
}

View 模型

class MyTestViewModel : BaseViewModel
{
#region Fields
#endregion

public MyTestViewModel(Message message)
: base(message)
{
AvailableObjects = PopulateDataSet();
}

#region Properties
public List<MyObject> AvailableObjects { get; set; }
}

查看XAML

  <dxg:GridControl x:Name="SearchGrid" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" MaxHeight="1024" AutoPopulateColumns="True" DataSource="{Binding Path=AvailableObjects}" >
<dxg:GridControl.Columns>
<dxg:GridColumn Header="Select" Width="60" FixedWidth="True" FieldName="IsChecked" ImmediateUpdateColumnFilter="True"></dxg:GridColumn>
<dxg:GridColumn Header="ID Number" Width="130" FixedWidth="True" ReadOnly="True" FieldName="ID"></dxg:GridColumn>
<dxg:GridColumn Header="Name" FieldName="Name" ReadOnly="True"></dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AllowEditing="True" x:Name="view" IndicatorWidth="0" AutoWidth="True"/>
</dxg:GridControl.View>
</dxg:GridControl>

最佳答案

尝试一下:

                    <dxg:GridColumn>
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<dxe:CheckEdit Checked="{Binding Path=IsChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>

关于wpf - 使用 WPF/MVVM 从网格中的复选框获取更改事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4392456/

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