首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图标DataTemplate用于图标MenuItem

图标DataTemplate用于图标MenuItem
EN

Stack Overflow用户
提问于 2015-05-15 18:53:35
回答 2查看 1.7K关注 0票数 1

我为menuitem.icon创建了一些图形。

代码语言:javascript
复制
<DataTemplate x:Key="navigation_arrow">
    <DockPanel LastChildFill="True" HorizontalAlignment="Center" VerticalAlignment="Center">
        <Grid>
            <Canvas>
                 <Rectangle Fill="Red" Width="30" Height="20"/>
            </Canvas>
        </Grid>
    </DockPanel>
</DataTemplate>

然后我尝试将这个模板用于menuitem.icon

代码语言:javascript
复制
<MenuItem Header="" Icon="{Binding navigation_arrow}"/>

但它是空的菜单。如果我在MenuItem.Icon中插入模板代码,一切都很好

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-15 20:21:41

首先:你的装订是错误的。必须将此键用作{DynamicResource navigation_arrow}{StaticResource navigation_arrow}

但这不管用。在本例中,您的图标将是"System.Windows.DataTemplate“字符串。

DataTemplate的意思是“它将为数据应用一个模板”。您没有Icon的数据,因此它不能应用模板。

您必须将具体项目添加为图标(如您所提到的),或为其创建样式:

代码语言:javascript
复制
<Style TargetType="MenuItem">
    <Setter Property="Icon">
        <Setter.Value>
            <DockPanel LastChildFill="True" HorizontalAlignment="Center" VerticalAlignment="Center">
                 <Grid>
                     <Canvas>
                         <Rectangle Fill="Red" Width="30" Height="20"/>
                     </Canvas>
                 </Grid>
            </DockPanel>
        </Setter.Value>
    </Setter>
</Style>

但最奇特的方法是:

票数 3
EN

Stack Overflow用户

发布于 2018-09-06 11:41:54

您可以使用ContentControl

代码语言:javascript
复制
<MenuItem.Icon>
    <ContentControl ContentTemplate="{StaticResource navigation_arrow}"/>
</MenuItem.Icon>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30266802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档