У меня есть пользовательский элемент управления в DataTemplate
, Style
из TextBlock
не меняет FontSize
, но меняет Background
.
Прилагаются образцы:
Создание окна WPF.
Создание пользовательского элемента управления, UserControl1
Внутри окна вставьте следующий код:
<Window.Resources>
<Style TargetType="{x:Type TextBlock}"
x:Key="TextBlockStyleFontAndBackgound">
<Setter Property="FontSize"
Value="20" />
<Setter Property="Background"
Value="Blue" />
</Style>
<DataTemplate x:Key="contentTemplate">
<StackPanel>
<m:UserControl1 />
</StackPanel>
</DataTemplate>
</Window.Resources>
<Grid>
<ContentControl FontSize="10">
<StackPanel x:Name="stackPanel">
<Button Click="Button_Click" />
<ContentControl ContentTemplate="{StaticResource contentTemplate}" />
<!--<m:UserControl1 />-->
</StackPanel>
</ContentControl>
</Grid>
В пользовательский элемент управления вставьте следующий код:
<UserControl.Resources>
<DataTemplate x:Key="contentTemplateInsideUserControl">
<TextBlock Name="textBlockInResourse" Text="textBlockInsideUserControlResource"
Style="{DynamicResource TextBlockStyleFontAndBackgound}"/>
</DataTemplate>
</UserControl.Resources>
<Grid>
<StackPanel>
<ContentControl ContentTemplate="{StaticResource contentTemplateInsideUserControl}" />
<Button Content="St" Click="Button_Click" />
<TextBlock Name="textBlockInControl" Text="textBlockInsideUserControl"
Style="{DynamicResource TextBlockStyleFontAndBackgound}" />
</StackPanel>
</Grid>
У нас есть 2 текстовых блока с одинаковым цветом фона, но с разными размерами шрифта.
textBlockInResourse FontSize = 20
, взяты из стиля TextBlockStyleFontAndBackgound
textBlockInControl FontSize = 10
, наследуемое значение, почему это происходит?
Я добавил дескриптор в пользовательский элемент управления:
private void Button_Click(object sender, RoutedEventArgs e)
{
Style style = FindResource("TextBlockStyleFontAndBackgound") as Style;
textBlockInControl.Style = null;
textBlockInControl.Style = style;
}
И теперь Font
настроен на стиль TextBlockStyleFontAndBackgound
, а его размер составляет 20
Почему теперь FontSize
взят из стиля TextBlockStyleFontAndBackgound
.
Спасибо,
барак