2010-05-24 74 views
0

我有应用模板到我的复选框麻烦。我有以下的模板:麻烦将一个简单的模板

<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> 

然而,视觉工作室给了我以下错误:

Cannot find the Trigger target 'path'. (The target must appear before any Setters, Triggers, or Conditions that use it.)

任何人都可以理解这一点?

回答

0

它正在寻找一个名为“路径”的控件模板内的元件(控制)。你需要在ControlTemplate中有这样的元素才能使这个触发器工作。

0

,因为你要创建一个在你的复选框边框时是器isChecked空这是可能的,但你并没有真正定义一个名为“路径” Path元素。

0

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

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

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

CheckBox ControlTemplate Example MSDN上。

此外,还要检查这个StackOverflow的问题: