绑定到datagridtemplatecoluml中的复选框
本文关键字:复选框 datagridtemplatecoluml 绑定 | 更新日期: 2023-09-27 18:01:53
我试图使用DataGridTemplateColumn
与CheckBox
作为DataTemplate中的唯一项目。我还不能让绑定与我的视图模型一起工作。绑定工作如预期的DataGridCheckBoxColumn
,但与DataGridCheckBoxColumn的问题是,用户必须点击两次,以便选中/取消选中复选框。我发现了其他的帖子,建议在datagridtemplatecolum列内使用这个复选框,它的工作方式如预期的那样,只需要一次点击来操作复选框。现在我只需要得到绑定。
我更愿意在xaml中实现绑定,而不是在后台代码中。
下面是相关的示例:
<DataGrid Name="BatchRecordParameters">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Extract">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=ShouldExtract, Mode=TwoWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!-- <DataGridCheckBoxColumn Binding="{Binding Path=ShouldExtract}" Header="Extract" />-->
<DataGridTextColumn Binding="{Binding Path=ParameterName}" Header="Parameter Name" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding Path=ParameterValue}" Header="Parameter Value" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
在上面的代码片段中,DataGridCheckBoxColumn
被注释掉了—绑定适用于该列,但是需要在复选框上单击两次。Checkbox
有我最近的绑定尝试。我已经根据我读过的不同帖子尝试了许多变化。
如果有帮助的话,我的视图模型中的支持属性和对象如下:
public class ParameterData
{
public bool ShouldExtract { get; set; }
public string ParameterName { get; set; }
public string ParameterValue { get; set; }
}
public IObservableCollection<ParameterData> BatchRecordParameters
{
get { return batchRecordParameters; }
set
{
batchRecordParameters = value;
NotifyOfPropertyChange(() => BatchRecordParameters);
}
}
这是一个WPF应用程序,我正在使用Caliburn。Micro作为我的MVVM框架。我找到了十几个解决类似问题的帖子,但没有一个解决方案对我有效。任何帮助得到绑定工作是非常感激的!
首先你需要继承calibre
public class ParameterData : PropertyChangedBase
然后转换属性以实现通知更改
public bool ShouldExtract
{
get
{
return this.shouldExtract;
}
set
{
if (value.Equals(this.shouldExtract))
{
return;
}
this.shouldExtract = value;
this.NotifyOfPropertyChange(() => this.ShouldExtract);
}
}
对于XAML,下面的代码就可以了
<DataGridCheckBoxColumn Header="Extract" Binding="{Binding ShouldExtract}"></DataGridCheckBoxColumn>