【发布时间】:2017-12-04 12:57:13
【问题描述】:
我想要做的是在选中 DataGridCheckBoxColumn 中的复选框时启用按钮。我做了一些研究,并在下面找到了这个 stackoverflow。我发现将 UpdateSourceTrigger=PropertyChanged 放在列上应该可以解决问题,但是当我在属性上放置断点时,它不会被调用。
Checkbox event that fires AFTER the value has changed
这是我的 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>
在我的视图模型中,我的属性是这样的:
private ObservableCollection<Objects.MyClass> _myProperty;
public ObservableCollection<Objects.MyClass> MyProperty
{
get { return _myProperty; }
set
{
_myProperty= value;
this.RaisePropertyChanged();
}
}
其中 MyClass 是一个包含三个属性的简单类:
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.
}
我有什么遗漏的吗?根据我在网上收集的信息,复选框列上的 UpdateSourceTrigger=PropertyChanged 应该允许我查看复选框值何时更改。任何帮助都会很棒。
【问题讨论】:
-
所以只是为了验证:您的属性 Status 从未被命中?
-
你怎么知道这个属性没有被调用?
-
如果我在课堂上的“状态”上放置一个断点,它会被返回;并且属性在视图中更新。但是,问题是视图看不到更新的值。我知道这不会发生,因为我在我的财产上放置了一个断点。