WPF:将面板资源移动到字典文件

时间:2014-01-07 07:20:49

标签: wpf resources resourcedictionary

我的一个Grid目前以下面的代码开头:

<Grid x:Name="Top_GRID" Margin="4.953,10" Width="817.28">
   <Grid.Resources>
   <Style TargetType="TextBlock">
      <Setter Property="VerticalAlignment" Value="Center"/>
      <Setter Property="Margin" Value="3"/>
      <Setter Property="Background" Value="Red" />
   </Style>
   <Style TargetType="TextBox">
      <Setter Property="VerticalAlignment" Value="Center"/>
      <Setter Property="Margin" Value="3"/>
   </Style>
   <Style TargetType="Button">
       <Setter Property="VerticalAlignment" Value="Center"/>
       <Setter Property="Margin" Value="3"/>
   </Style>
</Grid.Resources>

只是为了澄清 - 我想声明一个 Grid ,其中所有 TextBlocks 都将Background属性设置为“Red”。所有按钮边距都设置为“3”,依此类推。 我想将资源定义移动到字典文件中 我应该以某种方式将其包装为样式? 如果是这样,我将会有一个递归式的声明(我认为这是非法的) 听起来很简单,但我找不到办法。

3 个答案:

答案 0 :(得分:1)

试试这个

<Style x:Key="Grid_ControlStyle" TargetType="Grid">
        <Style.Resources>                
                <Style TargetType="TextBlock">
                    <Setter Property="VerticalAlignment" Value="Center"/>
                    <Setter Property="Margin" Value="3"/>
                    <Setter Property="Background" Value="Red" />
                </Style>
                <Style TargetType="TextBox">
                    <Setter Property="VerticalAlignment" Value="Center"/>
                    <Setter Property="Margin" Value="3"/>
                </Style>
                <Style TargetType="Button">
                    <Setter Property="VerticalAlignment" Value="Center"/>
                    <Setter Property="Margin" Value="3"/>
                </Style>             
        </Style.Resources>
    </Style>

答案 1 :(得分:0)

您需要在resourceDictionary文件中放置按钮,TextBox等的所有样式。然后在应用程序资源中添加此文件:

<Application x:Class="Aplication.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
        >  
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Resources\YourResource.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

然后在xaml中你可以像这样使用它

 <TextBlock Grid.Column="1" Grid.Row="1" Text="bla bla" Style="{DynamicResource YourStyle}"/>

最后你的风格应该是

 <Style x:Key="StyleName" TargetType="{x:Type TextBlock}">
    <Setter Property="Margin" Value="3,3,3,3"/>
    <Setter Property="FontFamily" Value="Arial"/>
    <Setter Property="FontSize" Value="12pt"/>
    <Setter Property="HorizontalAlignment" Value="Center"/>
    <Setter Property="VerticalAlignment" Value="Center"/>
</Style>

希望这就是你要找的东西。

答案 2 :(得分:0)

请在WPF中查看资源字典的概念。任何样式,颜色,字体等任何与您希望在应用程序的多个屏幕中重复的应用程序外观相关的内容都将被放置在资源字典中。

x:Key是可用于在整个应用程序中的任何位置访问样式的属性。 要使您的资源字典可以通过应用程序访问,请将其放入app.xaml