Wpf 通用xaml中的setter,用于修改功能区控件内的命名组件特性

Wpf 通用xaml中的setter,用于修改功能区控件内的命名组件特性,wpf,ribboncontrolslibrary,Wpf,Ribboncontrolslibrary,我在请客 如何使功能区菜单项中的图像变小(并且不会延伸到32x32,好像在任何情况下都是可取的) 基于为此类控件替换控件模板,我得到了一个非常好的答案,然后我开始认为我可以使用已经存在的模板,并在generic.xaml中使用setter来修改其中的属性 如何查看功能区控件的组件结构?通过右键单击属性“Template”并将控件模板提取到现有的xaml文件,可以很容易地完成此操作 我可以研究这样一个菜单项的整个组件结构。这里和哪里都有命名组件,我发现了一个名为“Image”的组件 所以我试着在g

我在请客 如何使功能区菜单项中的图像变小(并且不会延伸到32x32,好像在任何情况下都是可取的)

基于为此类控件替换控件模板,我得到了一个非常好的答案,然后我开始认为我可以使用已经存在的模板,并在generic.xaml中使用setter来修改其中的属性

如何查看功能区控件的组件结构?通过右键单击属性“Template”并将控件模板提取到现有的xaml文件,可以很容易地完成此操作

我可以研究这样一个菜单项的整个组件结构。这里和哪里都有命名组件,我发现了一个名为“Image”的组件

所以我试着在generic.xaml中这样做:

<Style TargetType="{x:Type ribbon:RibbonApplicationMenuItem}">
  <Setter Property="Image.Height" Value="16" />
  <Setter Property="Image.Width" Value="16" />
</Style>

<Style TargetType="{x:Type ribbon:RibbonApplicationSplitMenuItem}">
  <Setter Property="Image.Height" Value="16" />
  <Setter Property="Image.Width" Value="16" />
</Style>

但我得到的只是这个:

好吧,它有一些影响,但到底发生了什么?
我做错了什么?我可以像这样调整控件的命名图像大小吗?

我从未在generic.xaml中尝试过类似的主题,但您可以创建一个新文件和一个新的resourcedictionary。现在插入样式并设置x:Key属性,如下所示:x:Key{x:Type ribbon:RibbonApplicationMenuItem}。现在转到App.xaml,它应该是这样的

<Application x:Class="Coba.WPF.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"              
             StartupUri="MainPage.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>

                                   <ResourceDictionarySource="yourresourcedictionarypath.xaml" />

            </ResourceDictionary.MergedDictionaries>           
        </ResourceDictionary>
    </Application.Resources>
</Application>

好的,这是我在研究过程中得到的:

<Setter Property="Image.Height" Value="16" />

正在设置图像的任何实例的高度,而不是名为“Image”的控件的高度

和使用

<Setter TargetName="Image" Property="Height" Value="16" />

无法工作,因为无法在模板内使用TargetName,除非它位于触发器中