我为menuitem.icon创建了一些图形。
<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
<MenuItem Header="" Icon="{Binding navigation_arrow}"/>但它是空的菜单。如果我在MenuItem.Icon中插入模板代码,一切都很好
发布于 2015-05-15 20:21:41
首先:你的装订是错误的。必须将此键用作{DynamicResource navigation_arrow}或{StaticResource navigation_arrow}。
但这不管用。在本例中,您的图标将是"System.Windows.DataTemplate“字符串。
DataTemplate的意思是“它将为数据应用一个模板”。您没有Icon的数据,因此它不能应用模板。
您必须将具体项目添加为图标(如您所提到的),或为其创建样式:
<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>但最奇特的方法是:
发布于 2018-09-06 11:41:54
您可以使用ContentControl
<MenuItem.Icon>
<ContentControl ContentTemplate="{StaticResource navigation_arrow}"/>
</MenuItem.Icon>https://stackoverflow.com/questions/30266802
复制相似问题