首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Binding="{Binding (0)}“是什么意思?

Binding="{Binding (0)}“是什么意思?
EN

Stack Overflow用户
提问于 2014-02-19 11:30:37
回答 3查看 1.9K关注 0票数 8

我发现了这个:

代码语言:javascript
复制
<DataTrigger Value="True" Binding="{Binding (0)}">

RibbonMenuButton模板中的触发器。什么意思?我试过谷歌,但什么也没找到。

UPD更多代码:

代码语言:javascript
复制
<ControlTemplate x:Key="RibbonMenuButtonControlTemplate1" TargetType="{x:Type RibbonMenuButton}">
...
    <DataTrigger Binding="{Binding (0)}" Value="True">
        <Setter Property="TextElement.Foreground" TargetName="MainGrid" Value="{DynamicResource {x:Static SystemColors.MenuTextBrushKey}}"/>
        <Setter Property="PathFill" TargetName="TwoLineText" Value="{DynamicResource {x:Static SystemColors.MenuTextBrushKey}}"/>
        <Setter Property="CornerRadius" TargetName="OuterBorder" Value="0"/>
        <Setter Property="Background" TargetName="OuterBorder" Value="Transparent"/>
        <Setter Property="BorderBrush" TargetName="OuterBorder" Value="Transparent"/>
    </DataTrigger>
...

此代码在RibbonMenuButton控件上按下“编辑模板”按钮后以混合方式创建。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-19 12:11:45

看上去像个虫子。据我所知,在WPF中不能是这种类型的Binding。以下是缺陷清单,请注意connect.microsoft.com (归档)引用的第一段:

我正在尝试设计带状控件(System.Windows.Controls.Ribbon),我经常遇到问题。

  • 如果我使用Blend或其他工具复制丝带、RibbonGroup、RibbonTab等的默认模板,这些模板都有错误。有像{Binding (0)}**.** 这样的绑定
  • 我无法更改带状控件的高度。
  • 不可能更改RibbonGroup的模板、更改分隔符的外观并将标题放置在组的左上角。
  • 向ApplicationMenuButton添加标签是不可能的。此外,这个按钮有一个固定的宽度。
  • 我无法移除丝带控制底部的边框。

据我所知,这里没有修补程序。

票数 3
EN

Stack Overflow用户

发布于 2014-02-19 13:52:39

唯一可以显示的时间是在标记化路径格式中。参见故事板概述中“间接定位”下的代码示例。但是,在XAML代码中,它是无效的。我想发生的事情是这样的:

代码语言:javascript
复制
// something goes wrong here, and GetProperties returns an empty array
var propertyChain = GetProperties();

var path = new PropertyPath("(0)", propertyChain);

trigger.Binding = new Binding { Path = path };

对于空的PathParameters,XAML生成器可能会转储原始的标记化路径。

票数 3
EN

Stack Overflow用户

发布于 2014-02-19 12:16:02

很抱歉把这个作为回答,但它不适合在评论中。

你给我们的背景还是太少了,不过我猜是这样的。

它是某种东西的占位符。占位符在wpf世界中很少见,但很有用。这就是我现在所能想到的所有你给我们的信息。对我来说这是唯一有意义的事情。

我几乎没见过占位符。这是个聪明的主意。

通常,如果您有许多不同的主题和不同的资源名称,您最终将创建这样的占位符,它将在构建前后完成xaml文件。

这意味着您按了build操作,在编译之后或之前,xaml文件将被组合在一起,编写ribbonbar的人提供的工具将被执行以注入正确的主题资源名称,而不是占位符。

任何东西都可以被放置而不是占位符。

你从哪弄来的密码?您能使用Snoop工具查看什么是DataContext吗?

请为我们提供更多的上下文。

我建议您在运行时将模板转储到文件中,然后您将知道发生了什么。

以下是如何:

代码语言:javascript
复制
var stringBuilder = new StringBuilder();
var xmlSettings = new XmlWriterSettings
{
  Indent = true
};

using (var xmlWriter = XmlWriter.Create(stringBuilder, xmlSettings))
{
  XamlWriter.Save(controlName.Template, xmlWriter);
}

如果在运行时转储到文件中的模板中不再有(0),那么您就会知道它是f*ing占位符。()

你能不能试一下然后告诉我们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21879168

复制
相关文章

相似问题

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