将样式应用于海量项目的最佳方法是什么?
在我的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”。 有几种方法可以实现这一点:
<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?