我可以将控件的内联样式移动到其他文件吗?

时间:2018-10-02 19:07:13

标签: c# .net wpf

所以我有一个看起来像这样的StackPanel帽子。

<StackPanel Width="100"
                        Height="100"
                        Background="#212121"
                        x:Name="Box"
                        ZIndex="1" Margin="-48,168,146,151">

                <StackPanel.Style>
                    <Style TargetType="StackPanel">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding IsChecked, ElementName=theMenuButton}" Value="True">
                                <DataTrigger.EnterActions>
                                    <BeginStoryboard Storyboard="{StaticResource slideRight}" />
                                </DataTrigger.EnterActions>

                                <DataTrigger.ExitActions>
                                    <BeginStoryboard Storyboard="{StaticResource slideLeft}" />
                                </DataTrigger.ExitActions>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </StackPanel.Style>

                <StackPanel.RenderTransform>
                    <TranslateTransform />
                </StackPanel.RenderTransform>
            </StackPanel>

如您所见,它非常混乱,我将其最小化。 有什么办法可以像ResourceDirectory那样创建并引用该样式以最大程度地减少混乱?

为清楚起见,我想将<StackPanel.Style...移动到一个单独的文件中,并使用该文件引用StackPanel的样式

2 个答案:

答案 0 :(得分:2)

是的,您可以这样做。

您完全按照您所说的做,将Style标记移到资源字典中(在此过程中为其赋予x:Key)。然后,您必须将该词典合并到可视树中,以便此StackPanel可以访问它:

<!-- Use whatever parent of the stack panel. "Window" is an example -->
<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
           <ResourceDictionary Source="relativePathToYourDictionary"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>

然后您只引用样式:

<StackPanel Style="{StaticResource YourStyleKey}"/>

答案 1 :(得分:1)

在应用程序中重用样式的步骤。

  1. 添加“资源字典”类型的新文件,然后粘贴您的App.xaml
  2. 将此资源添加到Key文件中。
  3. 您可以将key分配给资源。

    -如果分配了{{1}},那么您在控制权上已经明确提到要使用该资源

    -未定义键,样式将自动应用于整个应用程序中已定义类型的所有控件