如何使用资源字典</styles.resources>中<styles.resources>中定义的资源

时间:2012-03-17 05:53:38

标签: wpf xaml resourcedictionary

我有一个资源字典,它是在其上定义的数据网格样式和数据网格样式内的样式。

<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而不将其移动到资源字典根目录?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您必须在您使用的任何控件/窗口等的资源部分中包含resourcedictionary才能找到它。您可以通过MergedDictionaries完成此操作。

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="myresourcedictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</UserControl.Resources>