2010-05-24 1 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 имеет значение null, но на самом деле вы не определили элемент Path с именем «путь».

0

Это означает, что WPF не знает, что такое "path" в Setters.

Когда вы определяете триггеры ControlTemplate, вам необходимо указать визуальные элементы, которые составляют флажок, а затем назвать один из этих элементов "path", а затем триггеры будут знать, к какому элементу они применяются.

Это выглядит как пример кода из статьи журнала MSDN: Using Templates to Customize WPF Controls. Если это так, вы должны использовать код, как на рисунке 1, так и на рисунке 2, для работы CheckBox. Доступен код для загрузки или онлайн-просмотра. Шаблон для фотомонтажа: BigCheckBox.xaml

На MSDN есть CheckBox ControlTemplate Example.

Кроме того, обратите внимание на эти вопросы StackOverflow: