WPF风格表现奇怪

时间:2014-02-26 04:33:23

标签: .net wpf xaml

我的App.xaml中有以下Style

<Style x:Key="BrowseBtn" TargetType="Button">
    <Setter Property="Content">
         <Setter.Value>
              <Image Source="pack://application:,,,/Resources/BrowseIcon.png" />
         </Setter.Value>
    </Setter>
</Style>

我在这样的Window中使用这种风格:

<Button x:Name="btnBrowseCampaigns" Grid.Row="0" Style="{StaticResource BrowseBtn}" />
<Button x:Name="btnBrowseDatabase" Grid.Row="1" Style="{StaticResource BrowseBtn}" />

正如您所看到的,两个按钮之间没有明显的区别,但在设计器中(以及在运行时),这些按钮中只有一个显示图标。这是一个错误还是什么?

1 个答案:

答案 0 :(得分:1)

尝试样式集x:Shared="False",如下所示:

<Window.Resources>
    <Style x:Key="BrowseBtn"
           x:Shared="True" 
           TargetType="{x:Type Button}">

        <Setter Property="Content">
            <Setter.Value>
                <Image Source="pack://application:,,,/BrowseIcon.jpg" />
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

默认情况下x:Shared="True"时,一个Style对所有人都是通用的 - 在这种情况下,系统会对副本Content发誓。当x:Shared="False"何时为每个元素创建它的请求时的样式。引自MSDN

  

设置为 false 时,修改WPF资源检索行为,以便对属性资源的请求为每个请求创建new instance,而不是为所有请求共享相同的实例。

有关详细信息,请参阅:

MSDN: x:Shared Attribute