gpt4 book ai didi

wpf - DataTemplate 中的 UserControl 未应用字体样式

转载 作者:行者123 更新时间:2023-12-04 21:25:03 26 4
gpt4 key购买 nike

我在 DataTemplate 中有一个用户控件, StyleTextBlock不会改变 FontSize但改变了Background .

附上 sample :

  • 创建 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 .

    谢谢,
    巴拉克

    最佳答案

    这是你在那里发现的一个非常奇特的问题。我不知道为什么 FontSize不在 DataTemplate 中时不受影响...查看MSDN上的两个属性描述和备注,唯一的区别就是TextBlock.FontSize也是AttachedProperty ,但我看不出这会如何影响任何事情。

    但是,如果您仍然感兴趣,我可以提供解决问题的方法。尝试声明您的 Style在您的 App.xaml文件:

    <Application.Resources>
    <Style TargetType="{x:Type TextBlock}" x:Key="TextBlockStyleFontAndBackgound">
    <Setter Property="FontSize" Value="20" />
    <Setter Property="Background" Value="Blue" />
    </Style>
    </Application.Resources>

    然后声明您的 TextBlock在您的 UserControl使用 StaticResource像这样:
    <TextBlock Text="text" Style="{StaticResource TextBlockStyleFontAndBackgound}" />

    关于wpf - DataTemplate 中的 UserControl 未应用字体样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5041629/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com