0

在 Silverlight(但可能同样适用于 wpf)中,我有一个数据网格,它具有验证并且可以进入无效状态。我通过以下方式检查:

if(grid.IsValid)
{
    ...
}

我有一个复选框在未选中时触发保存,我希望禁用此复选框,或者至少不取消选中网格是否处于无效状态。

就像是:

BeforeUncheckEvent
{
    if(datagridisvalid)
        allow;
    else
        disallow;
}

绑定到IsEnabled基于网格IsValid会更好。这不起作用:

IsEnabled="{Binding ElementName=grid, Path=IsValid, UpdateSourceTrigger=PropertyChanged}"

更新>>

我尝试将另一个复选框绑定到网格 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>

有任何想法吗?

4

1 回答 1

0

如果您可以访问处理程序所在DataGrid位置的引用Checked,那么您可以尝试这样做:

private void chkAllowManual_Checked(object sender, RoutedEventArgs e)
{
    if (!dataGrid.IsValid) e.Handled = true;
    else
    {
        // do your stuff here
    }
}

dataGrid.IsValid这应该阻止它在flase时被检查。

于 2013-09-05T16:27:42.390 回答