【发布时间】:2014-05-13 14:43:44
【问题描述】:
在我的 C# / WPF / .NET 4.5 应用程序中,我想实现一个触发器,它可以切换位于 ItemsControl 的 ItemTemplate 中的控件的可见性。
我有另一个名为 TheWorkspace 的控件。 TheWorkspace 的 DataContext 设置为填充我的 ItemsControl 的项目之一。对于包含 TheWorkspace 的 DataContext 的项目,我想显示指示我们正在处理的项目的文本。
我需要一个触发器,将项目的 DataContext 与 TheWorkspace 的 DataContext 进行比较,并相应地设置项目的可见性。
项目模板:
<DataTemplate>
<Grid>
<!-- ... -->
<TextBlock Grid.Column="2"
Text="This is the item we're working on."
Visibility="Hidden">
<TextBlock.Triggers>
<!-- Pseudocode -->
<DataTrigger Binding="{Binding TheWorkspace.DataContext}" Value="{Binding}">
<!-- /Pseudocode -->
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</TextBlock.Triggers>
</TextBlock>
</Grid>
</DataTemplate>
很遗憾,这并没有按预期工作。
如何替换伪代码以指定完成此行为的触发器?
【问题讨论】:
-
看来你把它复杂化了。使用
ListBox并简单地触发IsSelected。 -
或者保留 ItemsControl 并向视图模型添加另一个属性,例如“IsCurrent”。
标签: c# wpf datatrigger