【问题标题】:Making default control template editable in Expression blend在 Expression blend 中使默认控件模板可编辑
【发布时间】:2009-08-19 16:52:01
【问题描述】:

我在 XAML 中创建了自己的 ContentCONtrol,例如:

<ContentControl x:Class="server.ui.DiamondButton">
    <ContentControl.Template>
        <ControlTemplate TargetType="src:DiamondButton">
            <...>
        </ControlTemplate>
    </ContentControl.Template>
</ContentControl>

这会设置默认模板,通常效果很好。但是,模板在 Expression 中不可编辑。我收到消息“DiamondButton”ControlTemplate TargetType 与模板类型“ContentControl”不匹配。是否有另一种方法可以让我在 Blend 中进行编辑?

【问题讨论】:

  • 在 VS 2012 中有完全相同的消息
  • ... 使得无法在 VS Designer 中编辑控件。但这不会以任何方式影响编译器或运行时。

标签: wpf xaml expression-blend expression


【解决方案1】:

除非您在 ControlTemplate 的 TemplateBindings 中使用 DiamondButton 的特定属性,否则将 TargetType src:DiamondButton 更改为 ContentControl 应该可以解决问题;)..

<ContentControl x:Class="server.ui.DiamondButton">
    <ContentControl.Template>
        <ControlTemplate TargetType="ContentControl">
            <...>
        </ControlTemplate>
    </ContentControl.Template>
</ContentControl>

【讨论】:

  • 谢谢,但是,是的,我确实绑定到 DiamondButton 的特殊属性(该类的目的实际上是包装这些属性,否则我会使用样式按钮)。
  • 嗯.. 太糟糕了 ;).. 您是否已经尝试过 TargetType {x:Type src:DiamondButton} 的类型标记?
  • 是的;那是一回事。没关系;无论如何,我的大部分编辑都是在 XAML 中进行的;-P.
  • 如果您需要绑定到菱形按钮的特殊属性,您可以通过完全限定属性名称来做到这一点:&lt;Trigger Property="IsClicked" 变为 &lt;Trigger Property="server.ui.DiamondButton.IsClicked"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 2016-07-05
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
相关资源
最近更新 更多