Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 绑定到DataGridTemplateColumn内的复选框_C#_Wpf_Xaml_Caliburn.micro - Fatal编程技术网

C# 绑定到DataGridTemplateColumn内的复选框

C# 绑定到DataGridTemplateColumn内的复选框,c#,wpf,xaml,caliburn.micro,C#,Wpf,Xaml,Caliburn.micro,我试图使用带有复选框的DataGridTemplateColumn作为DataTemplate中的唯一项。我还不能让绑定与我的视图模型一起工作。DataGridCheckBoxColumn的绑定工作正常,但DataGridCheckBoxColumn的问题是用户必须单击两次才能选中/取消选中复选框。我还发现其他帖子建议在DataGridTemplateColumn中使用此复选框,它的工作原理与预期一样,只需单击一次即可操作复选框。现在我只需要拿到装订 我更愿意在xaml中实现绑定,而不是在代码隐

我试图使用带有复选框的DataGridTemplateColumn作为DataTemplate中的唯一项。我还不能让绑定与我的视图模型一起工作。DataGridCheckBoxColumn的绑定工作正常,但DataGridCheckBoxColumn的问题是用户必须单击两次才能选中/取消选中复选框。我还发现其他帖子建议在DataGridTemplateColumn中使用此复选框,它的工作原理与预期一样,只需单击一次即可操作复选框。现在我只需要拿到装订

我更愿意在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>

这是一个WPF应用程序,我使用Caliburn.Micro作为我的MVVM框架。我已经找到了十几篇关于类似问题的帖子,但没有一个解决方案对我有效。非常感谢您对装订工作的任何帮助

1您需要继承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>

我刚刚运行了Xaml,当我在声明中添加UpdateSourceTrigger=PropertyChanged时,它符合我的WOM原则。双向!DataGridTemplateColumn工作得非常好。在我的例子中,我将它绑定到一个名为FileCollection的集合,该集合被定义为private ObservableCollection\u FileCollection;public observeCollection FileCollection{get{return}FileCollection;}set{{FileCollection=value;OnPropertyChangedFileCollection;}}}@GarryVass就是这样做的!现在很好用。谢谢服务的所有部分。口碑原则每次都有效@Garry瓦斯-实际上,默认情况下,是DataGridTemplateColumn使所有绑定的UpdateSourceTrigger显式。更多信息请点击此处:
<DataGridCheckBoxColumn Header="Extract" Binding="{Binding ShouldExtract}"></DataGridCheckBoxColumn>