Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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# WPF checkboxcolumn—;如果复选框值已更改,请执行某些操作_C#_Wpf - Fatal编程技术网

C# WPF checkboxcolumn—;如果复选框值已更改,请执行某些操作

C# WPF checkboxcolumn—;如果复选框值已更改,请执行某些操作,c#,wpf,C#,Wpf,我想做的是在选中DataGridCheckBoxColumn中的复选框时启用一个按钮。我做了一些研究,发现了下面这个问题。我发现在列上放置UpdateSourceTrigger=PropertyChanged应该可以做到这一点,但是当我在属性上放置断点时,它不会被调用 以下是我的XAML代码: <DataGrid Grid.Row="3" Grid.Column="1" AutoGenerateColumns="False" FontSize="18" ItemsSource="{Bin

我想做的是在选中DataGridCheckBoxColumn中的复选框时启用一个按钮。我做了一些研究,发现了下面这个问题。我发现在列上放置UpdateSourceTrigger=PropertyChanged应该可以做到这一点,但是当我在属性上放置断点时,它不会被调用

以下是我的XAML代码:

<DataGrid Grid.Row="3" Grid.Column="1" AutoGenerateColumns="False" FontSize="18" ItemsSource="{Binding Path=MyProperty, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}">
    <DataGrid.Columns>
        <DataGridCheckBoxColumn Binding="{Binding Path=Status, UpdateSourceTrigger=PropertyChanged}" Header="Verify" Width="1*"/>
        <DataGridTextColumn Binding="{Binding Path=Id, UpdateSourceTrigger=PropertyChanged}" Header="PalletID" IsReadOnly="True" Width="2*"/>
    </DataGrid.Columns>
</DataGrid>

有什么我遗漏的吗?从我在线收集的信息来看,复选框列上的UpdateSourceTrigger=PropertyChanged应该允许我在复选框值更改时查看。任何帮助都会很好。

您的代码是工作伙伴。只需添加按钮并将Status属性绑定到按钮的IsEnabled属性

<DataGrid Grid.Row="3" Grid.Column="1" AutoGenerateColumns="False" FontSize="18" ItemsSource="{Binding Path=MyProperty, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}">
            <DataGrid.Columns>
                <DataGridCheckBoxColumn Binding="{Binding Path=Status, UpdateSourceTrigger=PropertyChanged}" Header="Verify" Width="1*"/>
                <DataGridTextColumn Binding="{Binding Path=Id, UpdateSourceTrigger=PropertyChanged}" Header="PalletID" IsReadOnly="True" Width="2*"/>
                <DataGridTemplateColumn>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button IsEnabled="{Binding Status}">I am a button</Button>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>

我是一颗纽扣

因此,只是为了验证:您的属性状态从未被命中?您如何知道该属性未被调用?如果我在类中的“Status”上放置断点,它确实会被返回;属性将在视图中更新。但是,问题是视图看不到更新的值。我知道这不会发生,因为我在我的属性上放置了一个断点。感谢您的反馈。我绑定到的按钮在datagrid之外,但您提供的在我的应用程序中起作用。
public string Id { get; set; }
public bool Verified { get; set; }
public bool Status { get; set; }


public MyClass(string id, bool currentStatus)
{
    Id = id;
    Verified = currentStatus;
    Status = false;//Set to false initially to deselect checkbox.
} 
<DataGrid Grid.Row="3" Grid.Column="1" AutoGenerateColumns="False" FontSize="18" ItemsSource="{Binding Path=MyProperty, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}">
            <DataGrid.Columns>
                <DataGridCheckBoxColumn Binding="{Binding Path=Status, UpdateSourceTrigger=PropertyChanged}" Header="Verify" Width="1*"/>
                <DataGridTextColumn Binding="{Binding Path=Id, UpdateSourceTrigger=PropertyChanged}" Header="PalletID" IsReadOnly="True" Width="2*"/>
                <DataGridTemplateColumn>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button IsEnabled="{Binding Status}">I am a button</Button>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>