问题标签 [markup-extensions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2030 浏览

c# - 用于动态更改 WPF UserControl 中按钮的启用状态的条件 DataTrigger

我创建了一个 UserControl 用作数据导航器。我在此控件中定义了两个 DependencyProperties,如下所示(隐含 DependencyProperty):

然后,我放置了四个按钮来执行基本的导航操作(第一个、上一个、下一个、最后一个)。每个按钮都有以下样式:

这个触发器所做的就是检查 DataCollection DependencyProperty 是否为空,假设将 RelativeResource TemplatedParent 作为每个按钮的 DataContext 传递,如下所示:

然后我创建了以下 MarkupExtension 来比较值并根据比较操作和比较值返回 true 或 false:

最后,我用这个 ME 测试了每个按钮的“启用”条件。这是第一个按钮的条件

不幸的是,这个解决方案没有奏效。我不断收到这个设计时异常:

InvalidOperationException:无法获取不属于视图树的 ViewNode 的 NodePath。

有没有人有更好的解决方案?也许我想在这里用大炮杀死一只苍蝇。:)

提前致谢。爱德华多·梅洛

0 投票
1 回答
2288 浏览

wpf - 数据触发器中的标记扩展

为了翻译我的 WPF 应用程序,我使用了一个返回绑定对象的标记扩展。这允许我在应用程序运行时切换语言。我像这样使用这个标记:

我想通过数据触发器更改按钮文本:

这会导致以下异常:

不能在“Setter”类型的“Value”属性上设置“Binding”。只能在 DependencyObject 的 DependencyProperty 上设置“绑定”。

好的,这对我来说很有意义。我试图在我的资源中定义 TextBlock 并{StaticResource MyResource}在 DataTrigger 的 Setter 值中使用。但是当我这样做时,我的 Button 的样式没有正确应用......

如何使用我的标记扩展并更改按钮上的文本,而不破坏按钮内的字符串样式?

0 投票
1 回答
397 浏览

wpf - 派生自 Binding 类 (Silverlight 4.0)

使用现有的Binding类,我们可以编写,

所以我们可以写任何东西作为电子邮件;本身没有有效性检查Binding。我开始写一个BindingMore派生的类,Binding以便最终我可以写,

some or which 将被触发以SomeMethod验证. 这是我的目标,我还没有写出来。 ICommanddelegateEmail

到目前为止,我只写了这段代码,

所以,在这个阶段,BindingMore完全等同于Binding,但是当我写

它给了我运行时错误。但是当我写的时候,

它工作正常。谁能告诉我为什么在第一种情况下会出现运行时错误?

不幸的是,没有显示错误。它显示的只是: 替代文字

此外,我从 XAML 收到以下错误消息(即使它完美构建并运行(在第二种情况下)):

类型 'local:BindingMore' 用作标记扩展,但不是从 MarkupExtension 派生的。

0 投票
1 回答
281 浏览

wpf - WPF:在 VS2010 中使用自定义标记扩展时的空格键问题

我们在 VS 2008 中使用自定义标记扩展开发了一个本地化解决方案。

当时,我们是这样使用它的:

(注意 DefaultText 中的空格)。(还要注意 StackOverflow 的文本颜色工具如何改变单词的颜色)。

但它工作正常并且编译没有问题。

但是在 VS 2010 中,每当您尝试使用这种实现标记扩展的方式键入空格时,IDE 总是会为您添加一个逗号,它给出:

当然,它不再编译了...

一种解决方案是以另一种方式实现此标记扩展:

但它增加了很多行,而且我们没有你想象的只有一个文本块......

另一种解决方案是不输入空格,而是复制另一个空格并粘贴(在 VS 2010 中仍然可以编译,但相当粗糙)。

在我看来,我们的解决方案并不是最佳实践。

你会建议什么样的最佳实践能够在没有不便的情况下键入空格?

感谢您的见解。

0 投票
1 回答
297 浏览

wpf - WPF,本地化:重新评估控制值

我正在对 WPF 中的本地化方法进行一项小型研究。我听说了带有标记扩展的想法:

<Label Content="{local:Translate {-- label ID here --}}" />

我非常喜欢这个解决方案:它非常容易实现并且看起来非常灵活。然而,我有一个担忧。假设用户在运行时更改了语言环境。如何确保重新评估本地化属性以匹配新语言?

0 投票
2 回答
75 浏览

wpf - WPF 在所有控件旁边显示小数字

我有很多 FrameworkElements(TextBlock、CheckBox、ListBox..),我想做一些东西,让我可以在每个控件之外显示一个小数字。

一些文字³

我想到了写一个 MarkupExtension,我可以像这样写那个数字:

然后以某种方式将其添加到控件的模板中。

但我敢肯定,你们对这个问题有更好的解决方案;)

0 投票
3 回答
2181 浏览

wpf - 如何使 Resharper 解析 CustomBinding MarkupExtension 的路径

我想创建一些扩展的 Binding-Markup-Extension,它的行为就像普通的 WPF 绑定,但做的更多(使用不同的默认值,可能添加一些行为等)。代码如下所示:

包括 XAML-intellisense 在内的一切都可以正常工作,只是我无法让 Resharper 正确解析我的 Binding-Path。即:使用此代码,我可以 [Strg]+单击“CurrentText”,Resharper 让 vs2010 导航到定义 CurrentText-Property 的代码。

但是使用在运行时正常工作的绑定,当悬停“CurrentText”时,我只得到一个工具提示,告诉我它是一些“MS.Internal.Design.Metadata.ReflectionTypeNode”,并且没有通过 [Strg]+Click 导航

我尝试了以下事情:

  • 从绑定派生
  • 派生自BindingDecoratorBase
  • 为我的 CustomBinding 类省略“扩展”后缀
  • 将标记扩展放在单独的程序集中
  • 使用 ConstructorArgumentAttribute
  • Path-Property 的字符串类型和 PropertyPath 类型的属性
  • 我还查看了原始类 Binding 和 BindingBase,但找不到与我的代码有任何不同的地方。任何想法在这里应该有什么帮助?或者这只是对我自己的 MarkupExtensions 无法获得的 Binding-MarkupExtension 的特殊处理?

    更新 16.03.2011:也可能是 Resharper 的错误或缺陷,Jetbrains 正在调查该问题:http: //youtrack.jetbrains.net/issue/RSRP-230607

    10.12.2013 更新:同时,该功能似乎正在运行(使用 R# 7.1.3,可能还有早期版本),我实际上使用了 BindingDecoratorBase 的方法,我非常喜欢它。如果您的 MarkupExtension 以“Binding”结尾,也许它只有效,但我的有效,所以我很高兴。

    0 投票
    1 回答
    384 浏览

    c# - .net 4.0 标记扩展 WPF

    我又带着另一个恼人的问题回来了。问题出在 .net 4.0 框架中,TargetProperty 类型转换似乎有一些问题,这在 msdn 论坛中也有报道。我已经提出了我在这里使用的代码。有人可以建议我一个解决方案吗?

    谈到这个问题的 MSDN 链接粘贴在下面: http ://social.msdn.microsoft.com/Forums/en/wpf/thread/931d7bff-90b6-4a70-bb0b-3a097e1301a1

    0 投票
    1 回答
    720 浏览

    wpf - 在 XAML 中使用标记扩展填充集合属性失败

    我正在尝试使用标记扩展提供的值填充集合(列表)属性。如果提供集合的属性具有公共设置器,则执行此操作会出现问题。我认为这是 XAML 实现中的一个错误(使用 .NET 3.5),但我不确定。

    考虑以下测试类

    和下面的标记扩展,它只提供一个字符串。

    现在以下测试用例都可以正常工作:Hurz

    但是这个测试用例失败了:

    失败的情况会引发一个异常,指出“字符串”不能转换为“列表”。有没有解释为什么这会失败,因为类似的情况 d) 和 c) 工作正常?

    0 投票
    1 回答
    487 浏览

    silverlight - 有没有办法在 Silverlight XAML 中实例化“类型”?

    众所周知,Silverlight 缺乏非常引人注目的x:Type MarkupExtension( Silverlight根本不支持MarkupExtension )。是否有任何动态解决方法?

    那么枚举(x:Static)呢?

    我需要将 CommandParameter 设置为 aTypeEnum值,Silverlight 都不支持这些!