在 Silverlight 2 (RC0) 中自动应用模板(主题)

发布于 2024-07-06 16:32:54 字数 76 浏览 8 评论 0原文

有没有办法自动将主题/模板/样式应用于目标类型的所有控件,这样我就不必在所有控件上指定 Template=..., Style=... ?

Is there a way to automatically apply a theme/template/style to all controls of the targettype, so I don't have to specify Template=..., Style=... on all controls?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

眼中杀气 2024-07-13 16:32:54

我认为有一种方法可以通过省略 x:Key 属性来做到这一点,但这似乎不再起作用了。 基于一些谷歌搜索,在我看来,您最好是创建一个自己的自定义控件库,其中包含一个定义您的自定义样式的主题/generic.xaml 文件。 然后您可以使用自己的样式正确的元素(MyButton 而不是 Button)。 或者坚持使用 Style 属性

此处的一些示例以及使用主题的替代方法此处

更新:刚刚找到了一个非常好的例子此处(我想您可能已经看过它了:)。

I thought there was a way to do this by just omitting the x:Key attribute, but that doesn't seem to work anymore. Based on some googling it seems to me like you're best best is to create a custom control library of your own that has a themes/generic.xaml file that defines your custom styles. Then you can use your own elements that are styled properly (MyButton instead of Button). Either that or stick with the Style property.

Some example of this here and an alternate approach using themes here.

Update: Just found a really good example of this here (I think you might have already seen it :).

月下伊人醉 2024-07-13 16:32:54

要为所有控件设置主题,请创建启动事件并在启动事件处理程序中设置主题。 该主题将应用于该解决方案中的所有用户控件。

//App.xaml

<Application x:Uid="Application_1" x:Class="SampleApp.Home.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml"
             Startup="Application_Startup">

//App.xaml.cs

private void Application_Startup(object sender, StartupEventArgs e)
        {
            StyleManager.ApplicationTheme = new MetroTheme(); //Set your theme here           
        } 

To set up a theme for all controls create a Startup event and set the theme in the Startup event Handler. That theme will be applied all user control in that solution.

//App.xaml

<Application x:Uid="Application_1" x:Class="SampleApp.Home.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml"
             Startup="Application_Startup">

//App.xaml.cs

private void Application_Startup(object sender, StartupEventArgs e)
        {
            StyleManager.ApplicationTheme = new MetroTheme(); //Set your theme here           
        } 
谢绝鈎搭 2024-07-13 16:32:54

Einarl:目前在 Silverlight 2 核心中还没有一种方法可以“级联”控制模板/样式。 也就是说,您不能为 TextBox 设置样式/控件模板并期望所有 TextBox 都选择它。 这绝对是团队正在为未来版本研究的内容。

Einarl: Right now there isn't a way to "cascade" control templates/styles in Silverlight 2 core. That is to say that you can't set a style/control template for TextBox and expect all TextBoxes to pick it up. It is definitely something the team is looking into for future versions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文