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