【发布时间】:2013-06-08 00:00:46
【问题描述】:
如果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 未找到“已关闭”类型。验证您没有缺少程序集引用,并且所有引用的程序集都有 已构建。
错误 3Windows Presentation Foundation (WPF) 项目不支持关闭。
我对 WPF 和绑定非常陌生。你能帮忙吗?
【问题讨论】:
-
"它不编译并抱怨绑定";你能提供实际的错误细节吗?
-
谢谢你,这很好。错误消息是它找不到 IAccount。
-
我得到了绑定工作。但这只是问题的一部分。我仍然不知道如何在第一个网格中应用样式并解析 DataTemplate.Triggers。这是我在 StackOverflow 上的第一个问题。我应该将绑定发布为答案并为样式/第一个网格打开单独的问题吗?或者更确切地说,用新发现更新问题?是否应该删除首先使用尝试进行的编辑?
标签: c# wpf data-binding if-statement wpfdatagrid