4

我在 GridViewColumn 中有一个复选框,用于显示/更改数据库值。复选框的单击事件用于更改数据库中的值。为了处理属性“IsChecked”的状态,我使用了 datatrigger 和 setter,下面是 xaml 代码:

<Style TargetType="CheckBox">
    <Setter Property="IsEnabled" Value="True" />
    <Style.Triggers>
        <DataTrigger Binding="{Binding Path=ID, Converter={StaticResource Converter}}"   Value="true">
            <Setter Property="IsChecked" Value="True"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

在我单击复选框之前,绑定效果很好。在我第一次单击复选框后,如果在数据库中手动更改了我映射到属性“IsChecked”的值,则属性“IsChecked”的状态不会更新。例如,如果我将相同的值映射到复选框的属性“内容”,即使我单击了复选框,触发器也可以正常工作。

有没有人没有什么问题?

4

3 回答 3

4

不应该

<Style TargetType="CheckBox">

而是:

 <Style TargetType="{x:Type CheckBox}">

编辑:

你可以试试这个:

    <Style TargetType="{x:Type CheckBox}" >
        <Setter Property="IsChecked" Value="{Binding Path=ID, Converter={StaticResource Converter}}" />
    </Style>
于 2008-11-13T13:38:26.583 回答
0

您可以尝试添加第二个数据触发器以将复选框设置为 false。正如我从您的代码中看到的那样,您将 IsChecked 仅设置为 true,但从不设置为 false。

于 2008-11-13T10:34:08.957 回答
0

除了使用 Click 来确定更改,也许您可​​以使用 Checked 和 Unchecked 事件?

于 2008-11-13T13:28:38.880 回答