【发布时间】:2017-03-23 07:53:21
【问题描述】:
我正在尝试使用 Setter 在 DataTrigger 中设置扩展器 IsExpanded 属性。
<ItemsControl.ItemTemplate>
<DataTemplate>
<Expander x:Name="myExpander" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding ElementName=myExpander, Path=IsKeyboardFocusWithin}" Value="False">
<Setter TargetName="Self" Property="IsExpanded" Value="False" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ItemsControl.ItemTemplate>
问题是当我写这样的代码时
TargetName="myExpander"
我想要一些关键字,例如“self”或“.” - 将 Setter 目标与其父元素相关联并找到它的东西。
【问题讨论】:
-
您可以省略 TargetName。没有目标就是自我。
-
当我省略 TargetName 时,会出现编译错误。它说找不到模板属性“IsExpanded”
-
Trigger 是为了一件事,而
Expander是另一件事。它们不是易于使用的关系(不是Self或RelativeSource)。使用名称来引用元素是完全可以的。有名字有什么问题? -
所以,在看到stackoverflow.com/questions/18403929/…这个话题后,我意识到触发器并不适合你想要的东西,你必须使用转换器。
标签: c# wpf xaml datatrigger expander