资源字典中的窗口启动位置

时间:2012-04-02 12:06:28

标签: wpf xaml styles resourcedictionary

我正在尝试将所有窗口设置为在屏幕中央打开。 我的所有窗口都使用样式文件:

    <Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="../Styles/Mystyles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>

所以我刚刚将此属性插入资源字典:

    <Style x:Key="windowStyle" TargetType="Window">
         <Setter Property="WindowStartupLocation" Value="CenterScreen"/>
    </Style> 

但是,它不起作用。我错过了什么吗?

4 个答案:

答案 0 :(得分:1)

您不能使用Style来定义WindowStartupLocation,这是因为它不是依赖属性。 您可以在资源字典中定义一个StaticResource,它将在您的窗口中使用:

<WindowStartupLocation x:Key="StartupLocation">CenterScreen</WindowStartupLocation>

然后像这样使用它:

WindowStartupLocation="{DynamicResource StartupLocation}"

答案 1 :(得分:0)

您不需要使用x:Key属性。你的风格必须如下:

<Style TargetType="{x:Type Window}">
    <Setter Property="WindowStartupLocation" Value="CenterScreen"/>
</Style> 

答案 2 :(得分:0)

如果您不想使用隐式样式(如bniwredyc建议的那样),您必须明确设置样式:

<Window **Style="{StaticResource windowStyle}"**>
<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="../Styles/Mystyles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>

答案 3 :(得分:0)

要在每个窗口中启动每个窗口,请在App.xaml中添加此行

<Application.Resources>
        <WindowStartupLocation x:Key="StartupLocation">CenterScreen</WindowStartupLocation>
</Application.Resources>

并在Window标记

中添加此行
WindowStartupLocation="{StaticResource StartupLocation}"