获取所有包含文本的元素

时间:2017-03-14 17:58:59

标签: c# .net wpf

我有一个应用程序已经使用样式模板来定义字体系列,字体大小,前景颜色等。

该应用程序的一个功能是使用户能够选择特定颜色,然后应用于所有文本,包括文本块,列表视图,按钮等。

我已经阅读了这个链接(Find all controls in WPF Window by type),在那里我可以找到所有对象' FrameworkElement的类型,然后根据其类型将颜色应用于每个元素。但是,我不确定这是最好的方法。

1 个答案:

答案 0 :(得分:0)

正如你所说,有很多方法可以做到这一点。 对于starter,您可以使用样式模板,然后使用StaticResource获取样式。例如:在您的视图mainwindow.xaml

<Window.Resources>
    <Style TargetType="{x:Type Control}" x:Key="baseStyle">
        <Setter Property="FontSize" Value="100" />
    </Style>
    <Style TargetType="{x:Type Button}" BasedOn="{StaticResource baseStyle}"></Style>
    <Style TargetType="{x:Type Label}" BasedOn="{StaticResource baseStyle}"></Style>
    <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource baseStyle}"></Style>
    <Style TargetType="{x:Type ListView}" BasedOn="{StaticResource baseStyle}"></Style>
    <!-- ComboBox, RadioButton, CheckBox, etc... -->
</Window.Resources>

或另一种方式是: 查看:mainwindow.xaml

<Window>
    <Window.resources>
    <Style TargetType="{x:Type TextBox}">
        <Setter Property="FontSize"
                Value="14" />
    </Style>
    </Window.resource>

    <Grid>
       <TextBox Text="blah"/>
    </Grid>
</Window>

OR

您可以从mainwindow构造函数

执行此操作
Style = (Style)FindResource(typeof(Window));

并且,您将把它放在app.xaml

<Style TargetType="{x:Type Window}">
    <Setter Property="FontSize"
            Value="14" />
</Style>