gpt4 book ai didi

.net - 在 ControlTemplate.Triggers 中使用 TemplateBinding

转载 作者:行者123 更新时间:2023-12-03 13:01:11 24 4
gpt4 key购买 nike

为什么下面的 XAML 给我一个 XamlParseException 和(无意义的)消息“表达式类型不是有效的样式值”。在运行时?

<Control x:Class="TestApp.Max.MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:Max="clr-namespace:TestApp.Max"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Control.Template>
<ControlTemplate>
<TextBlock Name="txt" Text="{TemplateBinding Max:MyControl.Foo}" />
<ControlTemplate.Triggers>
<Trigger Property="Control.IsMouseOver" Value="True">
<Setter TargetName="txt" Property="Text" Value="{TemplateBinding Max:MyControl.Bar}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Control.Template>
</Control>

违规行是
<Setter TargetName="txt" Property="Text" Value="{TemplateBinding Max:MyControl.Bar}" />

如果我用普通的 Binding 替换 TemplateBinding 它开始工作:
{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Text2}

由于我在 ControlTemplate 中,我不应该能够使用 TemplateBinding 吗?异常消息的真正含义是什么?

最佳答案

Binding TemplatedParent:在这一行中,path2 的值将应用于 TextBlock 的 Text 属性,因此运行良好。

在 TemplateBinding 中:仔细看一下, Max:MyControl.Bar 的解析值将充当模板绑定(bind)的资源键
[这里 Bar 的值不是实际值,而是一个属性键名 ],它不存在,因此它会抛出错误“给定的键不在字典中”。

关于.net - 在 ControlTemplate.Triggers 中使用 TemplateBinding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9281579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com