У меня есть базовый стиль, скажу:Настройка содержания в унаследованном (BasedOn) стиле
<Style x:Key="DefaultButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Background" Value="{StaticResource DefaultButtonBackground}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="ButtonShapeGrid" Height="{TemplateBinding Height}" Width="{TemplateBinding Height}">
<!-- snip some shaping Xaml. -->
<ContentPresenter
Grid.RowSpan="2"
VerticalAlignment="{TemplateBinding VerticalAlignment}" HorizontalAlignment="Center" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Теперь у меня есть необходимость создать несколько стилей, которые заменяют содержание кнопки с чем-то фиксированным ... (так что CloseButtonGlyph - это ресурс пути). Это прекрасно работает:
<Style x:Key="CloseButtonStyle" BasedOn="{StaticResource DefaultButtonStyle}" TargetType="{x:Type Button}">
<Setter Property="Content" Value="{StaticResource CloseButtonGlyph}" />
</Style>
Однако, мне также нужно добавить произвольное Xaml в содержание, и это, где у меня есть проблема. Ниже не работает (я получаю ошибку во время разработки о том, что содержание не может быть получена из ContentElement или Визуальное), когда стиль используется в окне WPF или управления:
<Style x:Key="WingDingStyle" BasedOn="{StaticResource DefaultButtonStyle}" TargetType="{x:Type Button}">
<Setter Property="Content">
<Setter.Value>
<TextBlock FontFamily="WebDings" Text="3" FontSize="18" Foreground="White" />
</Setter.Value>
</Setter>
</Style>
Я в убытке, как то, что мне нужно сделать. Помещение TextBox в содержимое кнопки в окне или управлении отлично работает, почему бы и нет в стиле?
Это работает, спасибо. Не знаете, почему просто настройка содержимого не сработает. – SergioL