none
WPF自定义控件切换风格问题,大家来帮帮我啊。 RRS feed

  • 问题

  • WPF自定义控件如何换风格。

    我作了一个控件,名称为Meter1,VS解决方案如下图所示

    Generic.maxl中是默认的风格,代码大致如下

    然后在MeterClass\Themes\Meter1.xaml中也存在他的别一个风格,如下所示

    其实这两个风格当前差异不是很大,现在有一个问题,我想让用户设定一个风格名称,然后控件就可以切换风格,我代码如下

    然后AfterStyleChangedDo()中代码如下

    控件编写好之后,在设计期是好的,但是,如果在运行态下,就会报错,如下图所示:

    现在我的疑问是:

    1、  我这种作法本身是否存在问题?

    2、  如果不存在问题,那么如何整体切换此控件的风格?

     

    大家帮帮我啊

    2010年7月15日 9:52

答案

  • 看不到图。

    如果要动态改变风格的话,用 ResourceDictionary 就可以了。Silverlight 4 的实例网站就可以动态切换风格,您可以参考一下它的源代码,WPF 和 Silverlight 的 XAML 用法是一样的,所以直接参考一下可以举一反三。可能也需要 VisualStateManager 的配合吧。我几年前做过用 ResourceDictionary 切换 Style 的 WPF 程序,应该可行。


    Mark Zhou
    2010年7月15日 10:04

全部回复

  • WPF自定义控件如何换风格。

    我作了一个控件,名称为Meter1,VS解决方案如下图所示

     

    Generic.maxl中是默认的风格,代码大致如下

     

    然后在MeterClass\Themes\Meter1.xaml中也存在他的别一个风格,如下所示

     

    其实这两个风格当前差异不是很大,现在有一个问题,我想让用户设定一个风格名称,然后控件就可以切换风格,我代码如下

    然后AfterStyleChangedDo()中代码如下

     

    控件编写好之后,在设计期是好的,但是,如果在运行态下,就会报错,如下图所示:

    现在我的疑问是:

    1、  我这种作法本身是否存在问题?

    2、  如果不存在问题,那么如何整体切换此控件的风格?

     

    大家帮帮我啊

    2010年7月15日 9:53
  • 看不到图。

    如果要动态改变风格的话,用 ResourceDictionary 就可以了。Silverlight 4 的实例网站就可以动态切换风格,您可以参考一下它的源代码,WPF 和 Silverlight 的 XAML 用法是一样的,所以直接参考一下可以举一反三。可能也需要 VisualStateManager 的配合吧。我几年前做过用 ResourceDictionary 切换 Style 的 WPF 程序,应该可行。


    Mark Zhou
    2010年7月15日 10:04