以编程方式从App.xaml设置样式

时间:2012-01-09 19:37:12

标签: c# wpf resources

我在代码中创建了一个新的Calendar控件:

  Calendar calendar = new Calendar();

我想将CalendarDayButtonStyle设置为我的app.xaml中定义的样式

  calendar.CalendarDayButtonStyle = ...

但我不知道该怎么做。此外,我无法访问“FindResource”,这是我见过其他人使用的。 (我在ICommand中,所以我无法访问此方法)还有其他方法吗?

2 个答案:

答案 0 :(得分:5)

您可以使用Application.Current.FindResource

答案 1 :(得分:3)

这很直接......

在您的应用程序中实例化ResourceDictionary

的App.xaml

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/AssemplyOfResource;Component/Resource.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

在代码中检索你的风格

代码隐藏

  object resource = Application.Current.FindResource("KeyName");
  if (resource != null && resource.GetType() == typeof(Style))
      calendar.Style = (Style)resource;

你会看到的大多数人只是使用Application.Current.FindResource(“KeyName”)并投射它,除非图形设计师决定搞乱ResourceDictionaries。这将导致应用程序不崩溃。

如果您需要一些特定的Calandar示例,请访问:

MSDN Magazine Customizing the New WPF Calendar Controls