我为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。如果我在MenuItem.Icon中插入模板代码,那么一切正常
答案 0 :(得分:3)
首先:你的绑定是错误的。您必须将此密钥用作{DynamicResource navigation_arrow}
或{StaticResource navigation_arrow}
。
但它没有用。您的图标将是&#34; System.Windows.DataTemplate&#34;在这种情况下,字符串。
DataTemplate
表示&#34;它将为数据应用模板&#34;。您还没有获取图标数据,因此无法为此应用模板。
您必须添加具体项目作为图标(如您所述)或为其创建样式:
<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>
但奇特的方式是:
答案 1 :(得分:0)
您可以使用 ContentControl :
<MenuItem.Icon>
<ContentControl ContentTemplate="{StaticResource navigation_arrow}"/>
</MenuItem.Icon>