简体   繁体   English

未在ItemsControl中触发ControlTemplate DataTrigger

[英]ControlTemplate DataTrigger is not fired in ItemsControl ControlTemplate

I have a NavigationMenuControl with an ObservableCollection<HtNavigationMenuQuickLinkItem> . 我有一个带有ObservableCollection<HtNavigationMenuQuickLinkItem>NavigationMenuControl Everything is working fine, but the Style on my HtMenuIcon Control is not triggered. 一切工作正常,但未触发我的HtMenuIcon控件上的Style Where the Visibility is changed correctly. 正确更改Visibility位置。 Can someone please give me a hint where I have a mistake? 有人可以给我提示我哪里有错误吗? QuickLinkSymbol is a DependencyProperty of an Enum . QuickLinkSymbolEnumDependencyProperty I also want to put the Visibility Behavior into the DataTrigger section. 我还想将“可见性行为”放入“数据DataTrigger部分。

Navigation Menu 导航菜单

<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>

QuickLinkItem 快速链接项

<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>

You need to reference Home as {x:Static EnumNAmeSpace:EnumType.Home}. 您需要将Home引用为{x:Static EnumNAmeSpace:EnumType.Home}。

Oh, and if QuickLinkSymbol is a DepProp of HtNavigationMenuQuickLinkItem, 哦,如果QuickLinkSymbol是HtNavigationMenuQuickLinkItem的DepProp,

just use Trigger instead of DataTrigger. 只需使用Trigger而不是DataTrigger。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM