控件模板数据触发器不会在 ItemsControl 控件模板中触发



我有一个ObservableCollection<HtNavigationMenuQuickLinkItem> NavigationMenuControl。一切正常,但未触发HtMenuIcon控件上的Style。正确更改Visibility的位置。有人可以给我一个提示,我哪里有错误? QuickLinkSymbolEnumDependencyProperty。我还想将可见性行为放入DataTrigger部分。

导航菜单

<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>
您需要

将 Home 引用为 {x:Static EnumNAmeSpace:EnumType.Home}。

哦,如果QuickLinkSymbol是HtNavigationMenuQuickLinkItem的DepProp,

只需使用触发器而不是数据触发器。

最新更新