Проблема применения простого шаблона - PullRequest
0 голосов
/ 24 мая 2010

У меня проблемы с применением шаблона для моих флажков.У меня есть следующий шаблон:

<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 голосов
/ 24 мая 2010

Скорее всего, вы хотите создать рамку вокруг вашего флажка, когда IsChecked имеет значение null, но вы на самом деле не определили элемент Path с именем «path».

0 голосов
/ 24 мая 2010

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

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

Это похоже на пример кода из статьи в журнале MSDN: Использование шаблонов для настройки элементов управления WPF . Если это так, вы должны использовать код из рисунка 1 и рисунка 2, чтобы иметь функционирующий CheckBox. Существует код, доступный для загрузки или просмотра в Интернете. Вот шаблон флажка: BigCheckBox.xaml

Существует Пример ControlBox ControlBox в MSDN.

Также, проверьте вопросы StackOverflow:

0 голосов
/ 24 мая 2010

Он ищет элемент (элемент управления) с именем "path" внутри ControlTemplate. Вам нужно иметь такой элемент внутри ControlTemplate, чтобы этот триггер работал.

...