我无法将模板应用到我的复选框中。我有以下模板:
<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给出了以下错误:
找不到触发目标'路径'。 (目标必须出现在任何目标之前 设置者,触发器或条件 使用它。)
有人能理解这个吗?
答案 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问题: