C# ControlTemplate DataTrigger未在ItemsControlTemplate中激发
我有一个C# ControlTemplate DataTrigger未在ItemsControlTemplate中激发,c#,wpf,xaml,C#,Wpf,Xaml,我有一个NavigationMenuControl和一个ObservableCollection。一切正常,但我的HtMenuIcon控件上的Style未触发。其中可见性已正确更改。谁能告诉我哪里有错吗QuickLinkSymbol是Enum的dependencProperty。 我还想将可见性行为放入DataTrigger部分 导航菜单 快速链接项 您需要将Home引用为{x:Static enumnespace:EnumType.Home} 哦,如果QuickLinkSymbol是HtN
NavigationMenuControl
和一个ObservableCollection
。一切正常,但我的HtMenuIcon
控件上的Style
未触发。其中可见性
已正确更改。谁能告诉我哪里有错吗QuickLinkSymbol
是Enum
的dependencProperty
。
我还想将可见性行为放入DataTrigger
部分
导航菜单
快速链接项
您需要将Home引用为{x:Static enumnespace:EnumType.Home} 哦,如果QuickLinkSymbol是HtNavigationMenuQuickLinkItem的DepProp
只需使用触发器而不是DataTrigger。您需要将Home引用为{x:Static enumnespace:EnumType.Home} 哦,如果QuickLinkSymbol是HtNavigationMenuQuickLinkItem的DepProp
只需使用触发器而不是数据触发器。谢谢!这是我的错误
Trigger
和DataTrigger
造成的混淆。但是x:static的引用拯救了我的一天!非常感谢。这是我的错误Trigger
和DataTrigger
造成的混淆。但是x:static的引用拯救了我的一天!
<Style TargetType="Navigation:HtNavigationMenu">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Navigation:HtNavigationMenu">
<Grid>
<StackPanel Orientation="Vertical">
<ItemsControl ItemsSource="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=QuickLinkItems}"/>
</StackPanel>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="Navigation:HtNavigationMenuQuickLinkItem">
<Style.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVis"/>
</Style.Resources>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Navigation:HtNavigationMenuQuickLinkItem">
<Controls:MyButton Width="40" Height="40" Margin="10,10,10,0">
<Viewbox Margin="3">
<Controls:HtMenuIcon x:Name="icon" Visibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsQuicklink, Converter={StaticResource BoolToVis}}"/>
</Viewbox>
</Controls:MyButton >
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding QuickLinkSymbol, RelativeSource={RelativeSource TemplatedParent}}" Value="Home">
<Setter TargetName="icon" Property="Style" Value="{StaticResource Home}"/>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>