Допустим, у меня много объявлений кнопок в WPF. Эти объявления кнопок очень похожи и различаются только одним свойством. Вот пример кода:
<Button x:Name="Button1"
...>
<Image Source="{StaticResource ButtonImage}"
Style="{StaticResource ButtonImageStyle}" />
</Button>
<Button x:Name="Button2"
...>
<Image Source="{StaticResource ButtonImage}"
Style="{StaticResource ButtonImageStyle}" />
</Button>
<Button x:Name="Button3"
...>
<Image Source="{StaticResource ButtonImage}"
Style="{StaticResource ButtonImageStyle}" />
</Button>
<Button x:Name="Button4"
...>
<Image Source="{StaticResource ButtonImage}"
Style="{StaticResource ButtonImageStyle}" />
</Button>
<Button x:Name="Button5"
...>
<Image Source="{StaticResource ButtonImage}"
Style="{StaticResource ButtonImageStyle}" />
</Button>
Все эти кнопки выглядят одинаково, они просто различаются по своему названию.
Поскольку все свойства кнопки одинаковы (кроме имени) Я создал стиль, содержащий все одинаковые свойства, и использовал этот стиль во всех моих кнопках.
<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
<Setter Property="..." Value="..." />
</Style>
<Button x:Name="Button1"
Style="{StaticResource ButtonStyle">
<Image Source="{StaticResource ButtonImage}"
Style="{StaticResource ButtonImageStyle}" />
</Button>
<Button x:Name="Button2"
Style="{StaticResource ButtonStyle">
<Image Source="{StaticResource ButtonImage}"
Style="{StaticResource ButtonImageStyle}" />
</Button>
<Button x:Name="Button3"
Style="{StaticResource ButtonStyle">
<Image Source="{StaticResource ButtonImage}"
Style="{StaticResource ButtonImageStyle}" />
</Button>
<Button x:Name="Button4"
Style="{StaticResource ButtonStyle">
<Image Source="{StaticResource ButtonImage}"
Style="{StaticResource ButtonImageStyle}" />
</Button>
<Button x:Name="Button5"
Style="{StaticResource ButtonStyle">
<Image Source="{StaticResource ButtonImage}"
Style="{StaticResource ButtonImageStyle}" />
</Button>
Пока все работает нормально.
Теперь, так как даже изображение то же самое на всех кнопках, я хотел переместить это изображение в стиль.
<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
<Setter Property="..." Value="..." />
<Setter Property="Content">
<Setter.Value>
<Image Source="{StaticResource ButtonImage}"
Style="{StaticResource ButtonImageStyle}" />
</Setter.Value>
</Setter>
</Style>
<Button x:Name="Button1"
Style="{StaticResource ButtonStyle" />
<Button x:Name="Button2"
Style="{StaticResource ButtonStyle" />
<Button x:Name="Button3"
Style="{StaticResource ButtonStyle" />
<Button x:Name="Button4"
Style="{StaticResource ButtonStyle" />
<Button x:Name="Button5"
Style="{StaticResource ButtonStyle" />
Но теперь я вижу только изображение на текущей активной кнопке, все остальные кнопки не показывают образ. Я предполагаю, что при перемещении изображения в стиль оно создается только один раз в памяти, и поэтому его можно показать только один раз.
Есть ли способ сообщить WPF, что объект, созданный в стиле, следует создавать отдельно? для каждого объекта, который использует этот стиль?