将样式应用于海量项目的最佳方法是什么?

在我的LOB应用程序中,我通常使用容器来包含大量不同的文本块和文本框,供用户输入数据。 通常我需要为每个控件应用一定的边距或垂直/水平对齐。

假设我的表单上有Grid,看起来像这样(为简洁起见,很多标记被删除):

<Grid>
   <Grid.ColumnDefinitions.../>
   <Grid.RowDefinitions.../>

   <TextBlock Text="MyLabel" />
   <TextBox Text={Binding ...}/>
   .
   '
   <!-- Repated a bunch more times along with all of the Grid.Row, Grid.Column definitions -->
</Grid>

现在我们假设我需要网格中包含的每个项目的边距=“3,1”VerticalContentAlignment =“Left”VerticalAlignment =“Center”。 有几种方法可以实现这一点:

  • 直接在每个控件上设置属性 - 很坏! 不允许剥皮或集中样式。
  • 使用x:Key =“MyStyleName”创建样式并将样式应用于每个控件。 更好的...使样式和皮肤集中化更易于管理,但仍需要大量标记,并且可能会变得笨拙。
  • 创建一个全局样式(即不要指定一个x:Key并设置TargetType = {x:Type TextBox / TextBlock} - BAD !!问题在于它会影响应用程序中的所有控件,而不会显式重写这种风格对菜单,网格和其他使用文本块和文本框的控件来说可能不好。
  • 创建一个面向Grid的样式,并明确地设置依赖属性值,如<Setter Property="Frameworkelement.Margin" Value="3,1" />不错...它正确地将样式应用于其内容中的每个元素,但也直接应用到网格本身...不完全是我想要的。
  • 那么你采取什么方法,为什么? 什么效果最好?


    您可以将“全局”样式放入网格的Resources部分,从而限制其影响。 要在不同位置重新使用“全局”样式,请将它们放入非默认资源字典中并将其作为MergedDictionary包含在其中:

    Styles.xaml

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <Style x:Key="{x:Type ...}"> ... </Style>
    </ResourceDictionary>
    

    形式如下:

    <Grid>
       <Grid.ColumnDefinitions.../>
       <Grid.RowDefinitions.../>
    
        <Grid.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="Styles.xaml" />
                </ResourceDictionary.MergedDictionaries>
    
                <!-- other resources here -->
    
            </ResourceDictionary>
        </Grid.Resources>
    
        ...
    </Grid>
    

    你可以使用#4,但是明确地覆盖网格本身的那些属性。


    看一下这个。

    http://karlshifflett.wordpress.com/2008/10/23/wpf-silverlight-lob-form-layout-searching-for-a-better-solution/

    我发现他们对LOB应用程序很有帮助。 即使您不使用库,源代码也可用,您可以了解如何进行全局样式设计。

    链接地址: http://www.djcxy.com/p/81345.html

    上一篇: What is the best approach for applying styles to massive amounts of items?

    下一篇: Is there an Unminified Version of google analytics?