0

Closed如果属性的值为 ,我想操作表单上的控件true

有一个类似的问题描述了DataTemplate触发器。我相信这是我需要的,但我无法让它发挥作用。

DataGrid的定义如下:

<DataGrid SelectedItem="{Binding SelectedAccount, Mode=TwoWay}" ItemsSource="{Binding Accounts, Mode=TwoWay}">
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Account Name">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBox x:Name="AccountName" Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" />
                    <DataTemplate.Triggers>
                        <DataTrigger Binding="{RelativeSource FindAncestor, AncestorType={x:Type IAccount}}"  Value="True">
                            ... property adjustments ...
                        </DataTrigger>
                    </DataTemplate.Triggers>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        ...

它不编译并引发错误

无法将“System.Windows.Data.RelativeSource”类型的对象转换为“System.Windows.Data.BindingBase”类型

我还尝试按照另一个问题中的描述应用绑定。

<DataTemplate DataType="models:IAccount"> OR <DataTemplate DataType="models:Account">
    ...
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Closed}" Value="True">
            ... property adjustments ...
        </DataTrigger>
    </DataTemplate.Triggers>

但这引发了其他错误消息

错误 1 ​​XML 命名空间“http://schemas.microsoft.com/winfx/2006/xaml/presentation”中不存在标记“已关闭”。

错误 2 未找到“已关闭”类型。确认您没有丢失程序集引用并且所有引用的程序集都已构建。 Windows Presentation Foundation (WPF) 项目不支持

错误 3 Closed。

我对 WPF 和绑定非常陌生。你能帮忙吗?

4

1 回答 1

0

结果证明解决方案非常简单。绑定需要定义如下。

<DataTemplate DataType="models:IAccount"> OR <DataTemplate DataType="models:Account">
    ...
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding Closed}" Value="True">
            ... property adjustments ...
        </DataTrigger>
    </DataTemplate.Triggers>

请记住也为您在 xaml 中的类型添加命名空间。

感谢大家纠正我的第一个问题以及您的帮助。

于 2013-06-13T23:24:49.920 回答