我正在尝试使用DataGridTemplateColumn
和CheckBox
作为DataTemplate中的唯一项目。我还没有能够使用我的视图模型进行绑定。绑定按预期使用DataGridCheckBoxColumn
,但DataGridCheckBoxColumn的问题是用户必须单击两次才能选中/取消选中该复选框。我发现其他帖子建议在DataGridTemplateColumn中使用这个CheckBox,并且按照预期工作只需单击一下即可操作复选框。现在我只需要获得绑定。
我更愿意在xaml中而不是在代码隐藏中实现绑定。
以下是相关的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框架。我找到了十几个解决类似问题的帖子,但没有一个解决方案对我有用。任何有关使绑定工作的帮助都非常感谢!
答案 0 :(得分:0)
第一,您将需要从caliburn继承
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>