.net 将样式应用于大量项目的最佳方法是什么?
在我的LOB应用程序中,我通常使用包含一堆不同文本块和文本框的容器,供用户输入数据。通常我需要对每个控件应用一定的边距或垂直/水平对齐 假设我的表单上有这样的网格(为了简洁起见,删除了很多标记):.net 将样式应用于大量项目的最佳方法是什么?,.net,wpf,styles,.net,Wpf,Styles,在我的LOB应用程序中,我通常使用包含一堆不同文本块和文本框的容器,供用户输入数据。通常我需要对每个控件应用一定的边距或垂直/水平对齐 假设我的表单上有这样的网格(为了简洁起见,删除了很多标记): . ' 现在让我们假设我需要网格中包含的每个项目都有Margin=“3,1”VerticalContentAlignment=“Left”VerticalAlignment=“Center”。有几种方法可以实现这一点: 直接在每个控件上设置属性-错误!!不允许蒙皮或集中样式 使用x:Key=“My
.
'
现在让我们假设我需要网格中包含的每个项目都有Margin=“3,1”VerticalContentAlignment=“Left”VerticalAlignment=“Center”。有几种方法可以实现这一点:
不错…它正确地将样式应用于其内容中的每个元素,但也直接应用于网格本身…这不完全是我想要的资源部分,从而限制其影响。要重新使用“全局”将样式放在不同位置,将它们放入非默认资源字典中,并将其作为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>
...
以下是我使用附加属性提出的解决方案:
我曾经和卡尔一起工作。我和他讨论过这个解决方案,但即使是他也说他可能会采取不同的做法。
<Grid>
<Grid.ColumnDefinitions.../>
<Grid.RowDefinitions.../>
<Grid.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles.xaml" />
</ResourceDictionary.MergedDictionaries>
<!-- other resources here -->
</ResourceDictionary>
</Grid.Resources>
...
</Grid>