选择特定控件时如何在wpf c#中应用主题效果完全应用

时间:2016-06-21 12:30:33

标签: wpf devexpress

你好朋友我已经创建了wpf主题,其中我放置按钮所以我的问题是当我点击特定按钮时,完整的应用程序颜色应该在下面更改我的代码和xaml。

<UserControl x:Class="Alyex.Exchange.UserControls.UCUserThemes"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
         xmlns:dxd="http://schemas.devexpress.com/winfx/2008/xaml/docking"
         xmlns:dxp="http://schemas.devexpress.com/winfx/2008/xaml/printing" 
         xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
         xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
         xmlns:dxga="http://schemas.devexpress.com/winfx/2008/xaml/gauges"
         xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
         xmlns:dxthm="clr-namespace:DevExpress.Xpf.Utils.Themes;assembly=DevExpress.Xpf.Core.v14.2"
         xmlns:common="clr-namespace:Alyex.Common;assembly=Alyex.Common" 
         xmlns:commonUIHelpers="clr-namespace:Alyex.CommonUI.UIHelpers;assembly=Alyex.CommonUI"
         xmlns:commonResource="clr-namespace:Alyex.Common.Resources;assembly=Alyex.Common"
         xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
         xmlns:sys="clr-namespace:System;assembly=mscorlib"
         mc:Ignorable="d" 
         d:DesignHeight="600" d:DesignWidth="900" ToolTip="WindowsTransparency">
<UserControl.Resources>
    <common:DebugConverter x:Key="debugConverter"/>
    <common:LanguagetoHorizontalContentAligmentConverter x:Key="ContentAlignmentConverter"/>
    <common:AllowInsertToNewNodeVisibilityConverter x:Key="newNodeVisibilityConverter"/>
    <common:BoolToStatusConverter x:Key="boolToStatusConverter"/>
    <DataTemplate x:Key="toolbarCustomization">
        <dxb:BarManagerActionContainer>
            <!--Remove Export Button-->
            <dxb:RemoveBarItemAndLinkAction ItemName="export" />
            <!--Remove Email Sending Button-->
            <dxb:RemoveBarItemAndLinkAction ItemName="email" />
            <!--Remove Save Button-->
            <dxb:RemoveBarItemAndLinkAction ItemName="save" />
        </dxb:BarManagerActionContainer>
    </DataTemplate>
    <DataTemplate x:Key="PageHeader" >
        <DockPanel>
            <StackPanel Orientation="Vertical">
                <dxe:ImageEdit x:Name="logo" HorizontalAlignment="Left" 
                           Margin="0,0,0,1" BorderThickness="0" 
                           VerticalAlignment="Top" IsPrintingMode="True"
                           HorizontalContentAlignment="Stretch" 
                           CausesValidation="False" 
                           Source="/Alyex.CommonUI;component/Images/Alx/ReportHeader.jpg"
                           Stretch="Fill"
                           Height="40"
                           Width="238"
                       />
                <dxe:TextEdit IsPrintingMode="True" 
                          Text="{Binding Source={x:Static sys:DateTime.Now},Mode=OneWay, StringFormat='{}{0:dddd, dd-MMMM-yyyy hh:mm tt}'}"
                          dxp:ExportSettings.TargetType="Text"
                          Background="Transparent"
                          Margin="0,0,0,3"
                          ></dxe:TextEdit>
            </StackPanel>
            <dxe:TextEdit Grid.Column="1" Grid.RowSpan="2"
                          EditValue="{Binding Content,Mode=OneWay}"
                          dxp:ExportSettings.TargetType="Text"
                          FontSize="25" FontWeight="ExtraBold"
                          Margin="10,0,0,1"
                          Background="Transparent"
                          HorizontalAlignment="Center"
                          MaxWidth="{Binding Path=UsablePageWidth, Mode=OneWay}"
                          />
        </DockPanel>
    </DataTemplate>

    <DataTemplate x:Key="PageFooter">
        <dxe:TextEdit                        
                     HorizontalContentAlignment="Center"
                     Width="{Binding Path=UsablePageWidth, Mode=OneWay}"
                     dxp:ExportSettings.TargetType="PageNumber"
                     dxp:PageNumberExportSettings.Kind="NumberOfTotal"
                     dxp:PageNumberExportSettings.Format="Page {0} of {1}" />
    </DataTemplate>

    <DataTemplate x:Key="StatusIndicator">
        <StackPanel Orientation="Horizontal">
            <dxga:StateIndicatorControl x:Name="lampRecordStatusIndicator" StateIndex="{Binding Path=RowData.Row.IsActiveRecord}" Width="20" Height="20">
                <dxga:StateIndicatorControl.Model>
                    <dxga:LampStateIndicatorModel />
                </dxga:StateIndicatorControl.Model>
            </dxga:StateIndicatorControl>
            <TextBlock x:Name="txtBlkRecordStatus" VerticalAlignment="Center" Text="{Binding Path=RowData.Row.IsActiveRecord, Converter={StaticResource boolToStatusConverter}, Mode=OneWay}"></TextBlock>
        </StackPanel>
    </DataTemplate>

</UserControl.Resources>
<Grid x:Name="grdContainer" Margin="3,3,3,3">
    <Grid.RowDefinitions>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <dxb:BarManager Name="barManager" CreateStandardLayout="True">
        <dxd:DockLayoutManager x:Name="dockLayotManager" AllowDocumentSelector="False" Background="Transparent">
            <dxd:LayoutGroup x:Name="layotGrp">
                <dxd:DocumentGroup x:Name="docmntGrpUserThemes" ClosePageButtonShowMode="InAllTabPageHeaders"
                               ShowDropDownButton="False" CaptionLocation="Bottom" AllowFloat="False" AllowDrag="False">
                    <dxd:DocumentPanel x:Name="docmntPnlUserThemes" Caption="UserThemes"
                                       AllowClose="False" AllowFloat="False" ToolTip="UserThemes"
                                       AllowDrag="False">
                        <DockPanel>
                            <dxe:ListBoxEdit Name="lstboxwindowsTransparancy" Margin="10" SelectedIndexChanged="lstboxWindowsTransparency_SelectedIndexChanged"
                                         ItemsSource="{Binding Source={x:Static dx:Theme.Themes},Mode=OneWay}">
                                <dxe:ListBoxEdit.ItemsPanel>
                                    <ItemsPanelTemplate>
                                        <WrapPanel Height="{Binding (FrameworkElement.ActualHeight), RelativeSource={RelativeSource AncestorType=ScrollContentPresenter}}" Orientation="Vertical" />
                                    </ItemsPanelTemplate>
                                </dxe:ListBoxEdit.ItemsPanel>
                                <dxe:ListBoxEdit.ItemTemplate>
                                    <DataTemplate>
                                        <Button  Width="130" Height="100">
                                            <Button.Content>
                                                <StackPanel>
                                                    <Image Source="{Binding SmallGlyph}" Width="40"/>
                                                    <AccessText  TextWrapping="Wrap" Text="{Binding}" HorizontalAlignment="Center"></AccessText>
                                                </StackPanel>
                                            </Button.Content>
                                        </Button>
                                    </DataTemplate>
                                </dxe:ListBoxEdit.ItemTemplate>
                            </dxe:ListBoxEdit>
                        </DockPanel>
                    </dxd:DocumentPanel>
                </dxd:DocumentGroup>
            </dxd:LayoutGroup>
        </dxd:DockLayoutManager>
    </dxb:BarManager>
</Grid>

这是我背后的代码

public partial class UCUserThemes : UserControl
{
    public UCUserThemes()
    {
        InitializeComponent();

    }

    private void lstboxWindowsTransparency_SelectedIndexChanged(object sender, RoutedEventArgs e)
    {
        DXSplashScreen.Show<WaitDialogSSView>();
        DevExpress.Xpf.Core.ThemeManager.ApplicationThemeName = DevExpress.Xpf.Core.Theme.Default.ToString();
        ImageSource img = new BitmapImage(((DevExpress.Xpf.Core.Theme)lstboxwindowsTransparancy.SelectedItem).SmallGlyph);
        ThemeManager.ApplicationThemeName = Theme.Office2010BlackFullName;
        DXSplashScreen.Close();
    }
}

}

1 个答案:

答案 0 :(得分:1)

ThemeManager.ApplicationThemeName= "Your Theme";