如果Closed
属性的值为true
,我想操作表单上的控件。
有一个类似的question描述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 已关闭。
我是WPF和绑定的新手。你能帮忙吗?
答案 0 :(得分:0)
解决方案结果非常简单。绑定需要定义如下。
<DataTemplate DataType="models:IAccount"> OR <DataTemplate DataType="models:Account">
...
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Closed}" Value="True">
... property adjustments ...
</DataTrigger>
</DataTemplate.Triggers>
请记住在xaml中为您的类型添加命名空间。
感谢大家纠正我的第一个问题和你的帮助。