[英]C# 'if' Binding value revisited
如果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关闭。
我对WPF和绑定非常陌生。 你能帮忙吗?
事实证明该解决方案非常简单。 绑定需要定义如下。
<DataTemplate DataType="models:IAccount"> OR <DataTemplate DataType="models:Account">
...
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Closed}" Value="True">
... property adjustments ...
</DataTrigger>
</DataTemplate.Triggers>
请记住,也要在xaml中为您的类型添加名称空间。
谢谢大家纠正我的第一个问题和您的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.