我有一个资源字典,它是在其上定义的数据网格样式和数据网格样式内的样式。
<Style TargetType="{x:Type DataGrid}" x:Key="CatalogDataGrid">
<Style.Resources>
<Style TargetType="{x:Type DataGridCell}" x:Key="RightAlignedDataGridCell">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border Padding="5,0" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center" HorizontalAlignment="Right" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Style.Resources>
</Style>
然后在我的XAML中,我尝试使用RightAlignedDataGridCell
,以便我的列正确对齐。
<DataGrid... Style="{StaticResource CatalogDataGrid}">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"></DataGridTextColumn>
<DataGridTextColumn Header="Total" Binding="{Binding Total}" CellStyle="{StaticResource RightAlignedDataGridCell}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
当我运行我的应用程序时,我收到资源未找到异常。如果我把那种风格放在资源字典根上。它可以工作。但我希望RightAlignedDataGridCell
留在里面
<Style.Resources>
的{{1}}。
如何在我的XAML上使用CatalogDataGrid
而不将其移动到资源字典根目录?
提前致谢。
答案 0 :(得分:2)
您必须在您使用的任何控件/窗口等的资源部分中包含resourcedictionary才能找到它。您可以通过MergedDictionaries完成此操作。
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="myresourcedictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>