首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TemplateBinding错误

TemplateBinding错误
EN

Stack Overflow用户
提问于 2014-11-28 15:28:47
回答 3查看 446关注 0票数 0

我开发了一个具有依赖项属性的自定义控件。

代码语言:javascript
复制
public static readonly DependencyProperty StateBorderBrushProperty =
        DependencyProperty.Register("StateBorderBrush", typeof(Brush), typeof(SmartCanvas),
        new FrameworkPropertyMetadata(Brushes.Transparent,
            FrameworkPropertyMetadataOptions.None));

当我试图从xaml外部设置我的控件的ControlTemplate时,问题就出现了,比如

代码语言:javascript
复制
<ControlTemplate TargetType="controls:SmartPrimitive">
                    <Grid>
                        <ContentPresenter/>
                        <Border BorderBrush="{TemplateBinding StateBorderBrush}" BorderThickness="2"/>
                    </Grid>
                </ControlTemplate>

听起来像是"XamlParseException:给定的键在字典中不存在“,在上面的TemplateBinding字符串中。有什么不对的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-29 16:09:26

我只是拼错了DependencyProperty所有者的类型。应该是SmartPrimitive,而不是SmartCanvas。但是..。WPF异常可能会提供更多信息。

票数 1
EN

Stack Overflow用户

发布于 2014-11-28 15:32:32

您错过了{x:Type }声明

代码语言:javascript
复制
<ControlTemplate TargetType="{x:Type controls:SmartPrimitive}">
     <Grid>
         <ContentPresenter/>
         <Border BorderBrush="{TemplateBinding StateBorderBrush}" BorderThickness="2"/>
     </Grid>
</ControlTemplate>

这意味着您要向TargetType提供字符串,而不是类型

x:Type标记扩展为接受类型类型的属性提供了从字符串转换行为。输入是XAML类型。

http://msdn.microsoft.com/en-us/library/ms753322%28v=vs.110%29.aspx

票数 1
EN

Stack Overflow用户

发布于 2021-01-03 14:18:34

在类似的情况下,我也有类似的问题。因此,我搜索了它,发现在这种情况下它不可能是TemplateBinding。

就像Sivasubramanian在这里的回答和解释,-> Using a TemplateBinding in ControlTemplate.Triggers

在TemplateBinding中:仔细观察一下,Max:MyControl.Bar的解析值将充当模板绑定的资源键-- Bar的值不是实际值,而是一个不存在的属性密钥名,因此它抛出错误“给定的键不在字典中”。

因此,基本上,将TemplateBinding更改为绑定

代码语言:javascript
复制
<ControlTemplate TargetType="{x:Type controls:SmartCanvas}">
 <Grid>
     <ContentPresenter/>
     <Border BorderBrush="{Binding StateBorderBrush, UpdateSourceTrigger=PropertyChanged}" BorderThickness="2"/>
 </Grid>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27191777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档