代码之家  ›  专栏  ›  技术社区  ›  David Veeneman

我必须创建一个自定义控件作为lookless吗?

  •  1
  • David Veeneman  · 技术社区  · 14 年前

    我正在创建一个从标准WPF控件之一派生的自定义控件。控件有几个组成部分,我只修改其中的一个。

    我的问题是:如果只修改控件的一部分,是否必须将控件声明为lookless,并在中为修改后的控件复制整个控件模板通用.xaml, 或者我可以省略lookless声明(在visualstudio提供的静态构造函数中找到)而仅仅修改我正在扩展的部分的控件模板吗?

    我尝试了后一种方法,而我的控件模板被忽略了。我想在复制整个控件模板之前得到确认,因为我要扩展的是WPF日历。谢谢你的帮助。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Berryl    14 年前

    听起来你最好的办法是粘贴整个模板并修改你需要的部分,尽管你没有明确说出你想要做什么或者发布任何代码。

    显然,如果您想更改的日历有一个属性可以在xaml中修改,那么这就更容易了。相反的极端是创建一个自定义控件(子类)。

    前几天我想更改颜色或组合框箭头,最简单的方法是在更改模板的一个部分(当然是箭头颜色)之后,将整个模板转换为样式并根据需要应用。没有什么可以改变的,我也不需要比这更复杂的东西。

    嗯,

        2
  •  1
  •   John Bowen    14 年前

    默认情况下为您生成的声明只允许为您的控件定义默认的隐式样式,而不只是采用基类型的默认样式。

    DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl), new FrameworkPropertyMetadata(typeof(MyControl)));
    

    使控件看起来不好看的不是任何特定的声明,而是它在代码文件中的定义,然后在运行时对它应用一些ControlTemplate。另一种方法是使用UserControl风格声明一个XAML+代码隐藏类,该类编译成一个包含UI和逻辑的类。

    一个简单的例子:Button不是你在屏幕上看到的东西,而是点击;Button是一个控件,它可以获取单个内容并将用户的点击转换为点击事件或命令调用。你在屏幕上看到的只是按钮固有行为和状态上的一个视觉模板。