将WPF主题的窗口控件与Telerik控件匹配

8
我们有一个主要使用Telerik WPF控件的项目。不幸的是,一些控件(主要是选项卡控件)存在无法解决的漏洞,因此我们不得不放弃它们并使用Windows等效控件。有没有办法让Windows控件像Telerik控件一样进行样式设置,因为目前它们根本不匹配。我被告知可以这样做,但在网上找不到任何相关信息。
提前感谢。
2个回答

13

好的,这个问题已经被“回答”了,但我也发现很难找到任何信息,所以对于那些跟进的人:

设置Telerik控件的主题很容易,例如:

Telerik.Windows.Controls.StyleManager.ApplicationTheme = new Telerik.Windows.Controls.SummerTheme();

但是你还需要创建一个资源文件来设置所有窗口控件的主题,例如

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"                    
                    >

    <Style TargetType="TextBox" BasedOn="{StaticResource {telerik:ThemeResourceKey ThemeType=telerik:SummerTheme, ElementType=TextBox}}" />
    <Style TargetType="Button" BasedOn="{StaticResource {telerik:ThemeResourceKey ThemeType=telerik:SummerTheme, ElementType=Button}}" />
    <Style TargetType="ListBox" BasedOn="{StaticResource {telerik:ThemeResourceKey ThemeType=telerik:SummerTheme, ElementType=ListBox}}" />
    <Style TargetType="CheckBox" BasedOn="{StaticResource {telerik:ThemeResourceKey ThemeType=telerik:SummerTheme, ElementType=CheckBox}}" />
    <Style TargetType="PasswordBox" BasedOn="{StaticResource {telerik:ThemeResourceKey ThemeType=telerik:SummerTheme, ElementType=PasswordBox}}" />
    <Style TargetType="ScrollViewer" BasedOn="{StaticResource {telerik:ThemeResourceKey ThemeType=telerik:SummerTheme, ElementType=ScrollViewer}}" />

接下来,您需要在应用程序的app.xaml文件中添加一行将其添加到应用程序资源中:

<ResourceDictionary Source="Resources/Windows_SummerTheme.xaml" />

或通过在代码中添加它:

Application.Current.Resources.MergedDictionaries.Add("./Resources/Windows_SummerTheme.xaml");

显然,你可以为每个主题创建一个文件,并使用 case 语句,以便用户可以从菜单中选择应用程序的外观。

希望这可以帮到你!


1

回答

我从最初告诉我的人那里弄清楚了这个问题,对于任何遇到相同问题的人来说,这是我找到的解决方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接