如何在已预定义WPF主题的对话框上添加控件?

时间:2012-04-04 15:31:07

标签: wpf dialog styles themes resourcedictionary

我是WPF的新手。我想做这样的事情: 我在应用程序中有多个对话框。我创建了一个主题,其中包含我想要的所有对话框所需的背景,标题栏和关闭按钮。然而,所有对话框的大小和对它们的控制都会有所不同。 例如:DialogWindow是我为Window控件创建的主题。

在MainWindow上(我应用这个DialogTheme),我可以看到这个主题。 但是当我尝试在其上添加控件时,它们不会显示在主题上。

<Window x:Class="Example.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="391" Width="616"
    Style="{DynamicResource DialogWindow}">
    <Window.Resources>        
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Themes/DialogsTheme.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>
</Window>

我不确定,出了什么问题。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您需要将这些行添加到您创建的每个窗口以获得样式...

<Window...Style="{DynamicResource DialogWindow}">
<Window.Resources>        
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Themes/DialogsTheme.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>

答案 1 :(得分:0)

最后得到了答案,ContentPresenter是一个必需的东西,它作为窗口主题的客户区。

<ContentPresenter Grid.Row="1" Grid.ColumnSpan="2" x:Name="ClientArea" />