无法应用简单的模板

时间:2010-05-24 15:08:58

标签: wpf xaml wpf-controls controltemplate

我无法将模板应用到我的复选框中。我有以下模板:

<ControlTemplate x:Key="TriStateRed" TargetType="{x:Type CheckBox}">
    <ControlTemplate.Triggers>
        <Trigger Property="IsChecked" Value="{x:Null}" >
            <Setter TargetName="path" Property="Data" Value="M 0 2.5 A 5 2.5 0 1 1 5 5 L 5 8 M 5 10 L 5 10" />
            <Setter TargetName="path" Property="Stroke" Value="Red" />
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

但是,visual studio给出了以下错误:

  

找不到触发目标'路径'。   (目标必须出现在任何目标之前   设置者,触发器或条件   使用它。)

有人能理解这个吗?

3 个答案:

答案 0 :(得分:0)

它正在ControlTemplate中寻找名为“path”的元素(控件)。您需要在ControlTemplate中包含此类元素才能使此触发器正常工作。

答案 1 :(得分:0)

可能是因为你想在IsChecked为空时在你的复选框周围创建一个边框,但你实际上并没有定义一个名为“path”的Path元素。

答案 2 :(得分:0)

这意味着WPF不知道"path"中的Setters是什么。

当您定义这样的ControlTemplate个触发器时,您需要指定构成复选框的可视元素,然后命名其中一个元素"path",然后触发器将知道它们应用于哪个元素。

这对我来说就像MSDN杂志文章中的示例代码:Using Templates to Customize WPF Controls。如果是这样,您必须使用图1和图2中的代码来运行CheckBox。有代码可供下载或在线浏览。这是复选框模板:BigCheckBox.xaml

MSDN上有CheckBox ControlTemplate Example

另外,请检查此StackOverflow问题: