【发布时间】:2015-05-17 08:59:52
【问题描述】:
我创造风格。此样式为导航创建箭头
<Style TargetType="MenuItem" x:Key="navigation_arrow">
<Setter Property="Icon">
<Setter.Value>
<DockPanel LastChildFill="True" HorizontalAlignment="Center" VerticalAlignment="Center">
<DockPanel.LayoutTransform>
<RotateTransform Angle="0"/>
</DockPanel.LayoutTransform>
<Grid>
<Canvas>
<Canvas.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="0.5" ScaleY="0.5"/>
</TransformGroup>
</Canvas.RenderTransform>
<Rectangle Fill="LightBlue" Width="24" Height="6" Canvas.Left="2" Canvas.Top="1" RenderTransformOrigin="0,0">
<Rectangle.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="30.277"/>
<TranslateTransform X="-0.79314" Y="-2.18035"/>
</TransformGroup>
</Rectangle.RenderTransform>
</Rectangle>
<Rectangle Fill="LightBlue" Width="44" Height="6" Canvas.Left="2" Canvas.Top="-1" RenderTransformOrigin="0.5,0.5"/>
<Polygon Fill="LightBlue" Points="0,12, 12,12, 6,1.6" Canvas.Left="-7" Canvas.Top="-4" RenderTransformOrigin="0,0.5">
<Polygon.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="-89.8"/>
<TranslateTransform X="5.97906" Y="5.99996"/>
</TransformGroup>
</Polygon.RenderTransform>
</Polygon>
<Rectangle Fill="LightBlue" Width="24" Height="6" Canvas.Left="-1" Canvas.Top="2" RenderTransformOrigin="1,0">
<Rectangle.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="-30.277"/>
<TranslateTransform X="-4.00853" Y="-14.1804"/>
</TransformGroup>
</Rectangle.RenderTransform>
</Rectangle>
</Canvas>
</Grid>
</DockPanel>
</Setter.Value>
</Setter>
</Style>
然后我将这个样式设置为 MenuItem
<MenuItem Style="{DynamicResource navigation_arrow}" Command="NavigationCommands.BrowseBack" />
<MenuItem Style="{DynamicResource navigation_arrow}" Command="NavigationCommands.BrowseForward" />
我看到第一个 MenuItem 失去了 hist 样式并变为空。但第二个 MenuItem 应用这种样式。如何解决这个问题?
【问题讨论】:
-
您的错误与 DynamicResource 绑定无关。当然,它应该适用于少数项目。我认为您的错误在其他地方。尝试添加更多 MenuItems,更改为其他 DynamicResource 样式等。分享它,以便我们为您提供帮助!
-
张贴显示结果的图片。
-
请添加更多关于您的风格的细节。真正的控件模板是什么样子的(没有...)?
-
它是导航的样式(后退和前进)我使用 DynamicResource 为几个按钮创建了样式,并且一切正常。但在这种情况下,我不理解为什么它不起作用!
-
问题在于,在您的情况下,DockPanel 及其内容的值仅创建一次,即使该样式被更频繁地使用。因为 DockPanel 是一个 UIElement,它只能被使用和显示一次。换句话说,每个 Icon 都分配了相同的 UIElement 实例,并且只有最后一次使用才能显示它。我仍然不确定是否有一个好的解决方案。