应用简单模板时遇到问题

发布于 2024-09-02 17:16:11 字数 655 浏览 6 评论 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>

但是,Visual Studio 给我以下错误:

找不到触发目标“路径”。 (目标必须出现在任何 设置器、触发器或条件 使用它。)

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

I'm having trouble applying a template to my checkboxes. I have the following template:

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

However, visual studio gives me the following error:

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

Can anyone make sense of this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

终难遇 2024-09-09 17:16:11

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

It is looking for an element(control) named "path" inside the ControlTemplate. You need to have such element inside ControlTemplate in order to get this trigger working.

月朦胧 2024-09-09 17:16:11

这可能是因为您希望在 IsChecked 为 null 时在复选框周围创建边框,但实际上尚未定义名为“path”的 Path 元素。

It's likely because you want to create a border around your checkbox when IsChecked is null, but you haven't actually defined a Path element with the name "path".

油饼 2024-09-09 17:16:11

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

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

在我看来,这就像 MSDN 杂志文章中的示例代码: 使用模板自定义 WPF 控件。如果是这样,您必须使用图 1 和图 2 中的代码才能使 CheckBox 正常工作。有代码可供下载或在线浏览。这是复选框模板: BigCheckBox.xaml

复选框控件模板示例

另外,请检查此 StackOverflow 问题:

It means WPF does not know what is "path" in Setters.

When you define ControlTemplate triggers like this, you need to specify visual elements that constitute checkbox and then name one of those elements "path" and then triggers will know on what element they are applied.

This looks to me like example code from MSDN magazine article: Using Templates to Customize WPF Controls. If this is so, you must use code from both Figure 1 and Figure 2 to have functioning CheckBox. There is code available for download or online browsing. Here is checkbox template: BigCheckBox.xaml

There is CheckBox ControlTemplate Example on MSDN.

Also, check this StackOverflow questions:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文