【问题标题】:In XAML is it possible to set a ResourceDictionary and Style in UserControl.Resources side-by-side?在 XAML 中,是否可以在 UserControl.Resources 中并排设置 ResourceDictionary 和 Style?
【发布时间】:2011-09-22 03:05:54
【问题描述】:

如果我已经设置了 ResourceDictionary,是否可以设置内联样式?

这是我已经设置的...

 <UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/My.Project.Common.Desktop;component/Themes/StandardStyles.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  </UserControl.Resources>

这是我需要添加到 UserControl.Resources 节点的样式...

 <Style x:Key="MessageErrorIcon" TargetType="{x:Type Rectangle}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Icon}" Value="Asterisk">
                    <Setter Property="Fill" Value="{DynamicResource MessageOverlayInformationIcon}"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Icon}" Value="Error">
                    <Setter Property="Fill" Value="{DynamicResource MessageOverlayErrorIcon}"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Icon}" Value="Exclamation">
                    <Setter Property="Fill" Value="{DynamicResource MessageOverlayExclamationIcon}"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Icon}" Value="Hand">
                    <Setter Property="Fill" Value="{DynamicResource MessageOverlayErrorIcon}"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Icon}" Value="Information">
                    <Setter Property="Fill" Value="{DynamicResource MessageOverlayInformationIcon}"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Icon}" Value="Question">
                    <Setter Property="Fill" Value="{DynamicResource MessageOverlayQuestionIcon}"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Icon}" Value="Stop">
                    <Setter Property="Fill" Value="{DynamicResource MessageOverlayErrorIcon}"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Icon}" Value="Warning">
                    <Setter Property="Fill" Value="{DynamicResource MessageOverlayExclamationIcon}"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>

我需要在 UserControl 级别设置这些样式,因为它们绑定到数据上下文。

我该怎么做?

【问题讨论】:

    标签: wpf xaml styles resourcedictionary


    【解决方案1】:

    你可以像这样添加资源

    <UserControl.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="pack://application:,,,/My.Project.Common.Desktop;component/Themes/StandardStyles.xaml" />
                </ResourceDictionary.MergedDictionaries>
                <Style x:Key="MessageErrorIcon"
                       TargetType="{x:Type Rectangle}">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Icon}"
                                     Value="Asterisk">
                            <Setter Property="Fill"
                                    Value="{DynamicResource MessageOverlayInformationIcon}" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding Icon}"
                                     Value="Error">
                            <Setter Property="Fill"
                                    Value="{DynamicResource MessageOverlayErrorIcon}" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding Icon}"
                                     Value="Exclamation">
                            <Setter Property="Fill"
                                    Value="{DynamicResource MessageOverlayExclamationIcon}" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding Icon}"
                                     Value="Hand">
                            <Setter Property="Fill"
                                    Value="{DynamicResource MessageOverlayErrorIcon}" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding Icon}"
                                     Value="Information">
                            <Setter Property="Fill"
                                    Value="{DynamicResource MessageOverlayInformationIcon}" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding Icon}"
                                     Value="Question">
                            <Setter Property="Fill"
                                    Value="{DynamicResource MessageOverlayQuestionIcon}" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding Icon}"
                                     Value="Stop">
                            <Setter Property="Fill"
                                    Value="{DynamicResource MessageOverlayErrorIcon}" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding Icon}"
                                     Value="Warning">
                            <Setter Property="Fill"
                                    Value="{DynamicResource MessageOverlayExclamationIcon}" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ResourceDictionary>
        </UserControl.Resources>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-13
      • 2017-02-27
      • 1970-01-01
      • 2011-12-07
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      相关资源
      最近更新 更多