在Silverlight中(但可能同样适用于wpf)我有一个数据网格,它有验证并且可能进入无效状态。我通过以下方式检查:
if(grid.IsValid)
{
...
}
我有一个复选框,在取消选中时会触发保存,我希望禁用此复选框,或者至少不取消选中网格是否处于无效状态。
类似的东西:
BeforeUncheckEvent
{
if(datagridisvalid)
allow;
else
disallow;
}
根据网格IsEnabled
绑定到IsValid
会更好。这不起作用:
IsEnabled="{Binding ElementName=grid, Path=IsValid, UpdateSourceTrigger=PropertyChanged}"
UPDATE>>
我已经尝试将另一个复选框绑定到网格IsValid,并且即使其他复选框几乎与不起作用的复选框相同也是如此。
某些代码>>
当我查看时:
<CheckBox x:Name="chkAllowManual" Checked="chkAllowManual_Checked" Unchecked="chkAllowManual_Unchecked" Content="Allow Manual" VerticalAlignment="Center" Margin="3,0,7,0" IsEnabled="{Binding ElementName=grdPrices, Path=IsValid}">
</CheckBox>
网格获取其itemsource设置,编辑后出现一些错误然后被正确禁用(不是原始复选框,而是旁边的复选框):
<CheckBox x:Name="chkAllowManual1" Checked="chkAllowManual_Checked" Unchecked="chkAllowManual_Unchecked" Content="Allow Manual1" VerticalAlignment="Center" Margin="3,0,7,0" IsEnabled="{Binding ElementName=grdPrices, Path=IsValid}">
</CheckBox>
有什么想法吗?
答案 0 :(得分:0)
如果您可以在DataGrid
处理程序的任何地方访问Checked
的引用,那么您可以尝试这样做:
private void chkAllowManual_Checked(object sender, RoutedEventArgs e)
{
if (!dataGrid.IsValid) e.Handled = true;
else
{
// do your stuff here
}
}
这可以阻止dataGrid.IsValid
出现时检查它。