gpt4 book ai didi

.net - 无法使用ItemContainerStyle设置菜单项的图标

转载 作者:行者123 更新时间:2023-12-04 16:55:37 25 4
gpt4 key购买 nike

我正在尝试像这样设置菜单项的图标-

 <Grid>
<Grid.Resources>
<Image
x:Key="ReportIconImage" Height="20" Width="20"
Source="/Resource/flag.png"/>
<Image
x:Key="ReportIconImage1" Height="20" Width="20"
Source="/Resource/flag.png"/>
</Grid.Resources>
<Menu Height="22" Margin="0,9,0,0" Name="menu1" VerticalAlignment="Top">
<MenuItem Header="Menu">
<MenuItem Header="Save" ></MenuItem>
<MenuItem Header="Open"/>
<MenuItem Header="Exit"/>
<MenuItem.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter
Property="Icon"
Value="{StaticResource ReportIconImage}">
</Setter>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
<MenuItem Header="Edit">
<MenuItem Header="Undo"/>
<MenuItem Header="Redo"/>
<Separator/>
<MenuItem Header="Cut"/>
<MenuItem Header="Copy"/>
<MenuItem Header="Paste"/>
<MenuItem.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter
Property="Icon"
Value="{StaticResource ReportIconImage1}">
</Setter>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
</Menu>
</Grid>

但是仅显示最后一个菜单项的图标,而不显示前两个菜单项的图标。

样例应用程序- http://weblogs.asp.net/blogs/akjoshi/Samples/WPFMenuItemBugSample.zip

任何人都可以提供此行为的原因以及可能的解决方案/解决方法。

最佳答案

这是因为您在资源中使用了ImageImage是一个控件,并且像其他任何控件一样,只能有一个父级。默认情况下,WPF将尝试在所有使用者之间共享资源。因此,最后的MenuItem“赢得”了Image和其他MenuItem的保管权,甚至不允许周末参观。

要解决此问题,您可以将Image设置为非共享:

<Image x:Shared="False" .../>

或者,更好的是,将图像资源显示为适当的 ImageSource 子类,并共享它:
<BitmapImage x:Key="ReportIconImage" Uri="/Resource/flag.png"/>
...
<Setter Property="Icon">
<Setter.Value>
<Image Source="{StaticResource ReportIconImage}"/>
</Setter.Value>
</Setter>

关于.net - 无法使用ItemContainerStyle设置菜单项的图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6464902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com