在Avalon Dock中更改主题

时间:2017-09-07 04:31:59

标签: avalondock

我在WPF应用程序中使用Xceed.Wpf.AvalonDock

我想在我的应用程序的起始页面上有一个功能,它允许用户通过单击按钮/链接来更改应用程序的主题。

有任何建议怎么做?

目前,我在XAML中使用以下代码来设置Aero主题:

<avalonDock:DockingManager.Theme>
    <avalonDock:AeroTheme/>
</avalonDock:DockingManager.Theme>

3 个答案:

答案 0 :(得分:0)

你应该可以像任何其他属性一样使用绑定来执行此操作:

<avalonDock:DockingManager Theme="{Binding ThemeProperty}">
...
</avalonDock:DockingManager>

然后在您的代码中只需使用您的按钮或您使用的任何控件更改ThemeProperty

答案 1 :(得分:0)

您可以添加一个包含主题名称的组合框,同时每个项目的Tag都填充了相关的主题名称:

<ComboBox>
    <ComboBoxItem Content="Generic" />
    <ComboBoxItem Content="Aero">
        <ComboBoxItem.Tag>
             <xcad:AeroTheme />
        </ComboBoxItem.Tag>
    </ComboBoxItem>
    <ComboBoxItem Content="VS2010">
        <ComboBoxItem.Tag>
            <xcad:VS2010Theme />
        </ComboBoxItem.Tag>
    </ComboBoxItem>
    <ComboBoxItem Content="Metro">
        <ComboBoxItem.Tag>
            <xcad:MetroTheme />
        </ComboBoxItem.Tag>
    </ComboBoxItem>
</ComboBox>

然后,项目中的这些标记名称用于绑定Theme中的DockingManager属性:

<xcad:DockingManager Theme="{Binding ElementName=_themeCombo, Path=selectedItem.Tag}">

答案 2 :(得分:0)

您可以这样设置主题修复程序:

<xcad:DockingManager Grid.Row="1" MaxHeight="425"
                           AllowMixedOrientation="True"
                           BorderBrush="Black"
                           BorderThickness="1"
                           >
            <xcad:DockingManager.Theme>
                <xcad:MetroTheme />
            </xcad:DockingManager.Theme>
 </xcad:DockingManager>