问题标签 [attached-properties]

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 投票
2 回答
168611 浏览

c# - InitializeComponent() 有什么作用,它在 WPF 中是如何工作的?

有什么作用InitializeComponent(),它在 WPF 中是如何工作的?

一般来说,首先,但我特别想知道构造顺序的血腥细节,以及当有附加属性时会发生什么。

0 投票
1 回答
203 浏览

wpf - PreviewCanExecuteEvent 未执行

我的 WPF 程序有问题。我正在尝试创建一个对象,它将处理程序添加到同一范围内的所有控件。

以下行不起作用。未处理该事件。

我还有一个绑定到按钮的命令。所以我的想法是我希望命令的 CanExecute 运行:这很好用。我还想要 PreviewCanExecute 的处理程序:这不起作用。

很抱歉,我无法更好地解释。

请参阅下面的代码:

XAML:

PermissionScope.cs

我真的一点帮助都没有。

最好的问候,迈克尔

0 投票
3 回答
53428 浏览

c# - 在后面的代码中更改 Canvas.Left 属性?

我的 XAML 中有一个矩形,想Canvas.Left在后面的代码中更改它的属性:

但这不起作用:

有谁知道这样做的语法是什么?

0 投票
1 回答
11837 浏览

c# - 为每个后面的代码添加附加属性的 DataBinding

我想为附加的属性添加每个 Codebehind 的 DataBinding,并希望Canvas.Left在 TextBox 中显示该属性。如何添加此属性?

0 投票
1 回答
11751 浏览

c# - 使用 Setter 更新样式触发器中的自定义附加属性

我正在尝试附加属性和样式触发器,希望了解更多信息。我编写了一个非常简单的带有附加属性的 WPF Windows 应用程序:

我正在尝试使用按钮样式部分中定义的属性触发器来更新“某物”附加属性:

但是,我不断收到以下编译错误:

错误 MC4003:无法解析样式属性“某事”。验证所属类型是否为 Style 的 TargetType,或使用 Class.Property 语法来指定 Property。第 10 行位置 29。

我不明白为什么它会给我这个错误,因为我确实在该部分的标签中使用了“Class.Property”语法。谁能告诉我如何解决这个编译错误?

0 投票
2 回答
409 浏览

c# - 丢失数据上下文的附加集合项

我创建了一个附加属性 AttachedBehaviorsManager.Behaviors,它将用作将事件与命令联系起来的 MVVM 帮助器类。该属性属于 BehaviorCollection 类型(ObservableCollection 的包装器)。我的问题是行为命令的绑定总是最终为空。当在按钮上使用时,它工作得很好。

我的问题是为什么我在集合内的项目上丢失了我的 DataContext,我该如何解决?

0 投票
1 回答
2173 浏览

wpf - 如何使 AttachedProperty 成为 MultiBinding 的目标?

我一直在使用 WPF DataGrid 并尝试集中我的单元格样式。在此重构过程中,我发现我的单元格样式需要了解每一列的不同验证逻辑。我决定在我的列对象上提供一个附加属性,该属性将包含我的验证逻辑的结果(每列的逻辑不同)并且可以在我的 DataGridCell 样式中访问。不幸的是,我绑定到附加属性的 MultiBinding 不起作用。

我的单元格样式包括一个 DataTrigger,其中触发器的绑定路径是一个附加属性。(注意样式的 TargetType 是 DataGridCell,它有一个 Column 属性)

我在我的 DataGrid 类(名为 ValidatingDataGrid 并扩展了 DataGrid)中定义了附加属性,如下所示:

最后,在我的 WPF 页面中,我有一个 DataGridTextColumn,我尝试将 ValidationValue(列的 AttachedProperty)绑定到 MultiBinding。

但是,当我尝试运行此程序时,我始终收到 XAML Parse Exception:

System.Windows.Markup.XamlParseException 发生

Message="无法在“DataGridTextColumn”类型的“SetValidationValue”属性上设置“MultiBinding”。只能在 DependencyObject 的 DependencyProperty 上设置“MultiBinding”。

来源="演示框架"

行号=0

线位置=0

StackTrace:在 MS.Internal.Helper.CheckCanReceiveMarkupExtension(MarkupExtension markupExtension,IProvideValueTarget provideValueTarget,DependencyObject& targetDependencyObject,DependencyProperty& targetDependencyProperty)

内部异常:空

我知道,如果我将 ValidationValue 设置为静态值(例如 Error),则该值会在 DataTrigger 中正确存储和访问。

  1. 谁能解释这个问题实际上是什么?我不明白异常消息的含义,因为 AttachedProperty 是一个 DependencyProperty,而 DataGrid 和 DataGridColumn 都是 DependencyObjects。

  2. 有没有办法将 ValidationValue AttachedProperty 绑定到 MultiBinding?如果没有,是否有其他 WPF 机制可以让我存储绑定的结果,以便我的 DataGridCell 样式可以读取它?

0 投票
1 回答
879 浏览

wpf - RegisterAttached String PropertyName 导致 AttachedProperty 不触发

我遇到了附加属性的一个奇怪问题,当我在调用 RegisterAttached 中分配属性名称并正确命名附加属性的名称(比如 TranslateProperty 和“Translate”)时,附加属性实现的代码不会不开火。就是不叫。如果我将字符串名称更改为 Translate 以外的任何其他名称(比如“Translate_”),代码就会被调用。

这是实现:

公共类 TranslateExtension : DependencyObject {

由于字符串中的属性是 Translate_,因此上述内容实际上有效。如果我将字符串值更改为“翻译”,它会失败。

我在同一个类中有 2 个其他附加属性,它们表现出完全相同的行为 - 与 AttachedProperty 名称相同,它们不会被调用。将其命名为其他名称,它就可以工作。

我不确定这里发生了什么。我的代码实际上是在使用无效的名称,但我不明白为什么,更重要的是我不确定这个错误的命名是否会导致任何副作用。

谁能看到我是否忽略了一些非常明显的东西?我在 AttachedProperties 的文章中重新审视了一些示例,但我没有看到那些使用特殊名称的实现——它们总是将字符串属性命名为与附加属性相同的名称。

0 投票
3 回答
5390 浏览

wpf - WPF 似乎没有找到自定义附加属性

我正在尝试将属性(Button.Background)绑定到我的自定义附加属性上的属性。

在一个 C# 文件中,我有

我的 XAML 的一个片段是

这是我得到的错误:

无法将属性“Path”中的字符串“(l:Square.Player).Brush”转换为“System.Windows.PropertyPath”类型的对象。

属性路径无效。“Square”没有名为“Player”的公共属性。

标记文件“Gobang.Gui;component/mainwindow.xaml”第 148 行位置 59 中的对象“System.Windows.Data.Binding”出错。

但是既然Player是 on 的附加属性Square,上面的代码应该可以工作,对吧?

0 投票
3 回答
25972 浏览

wpf - 附加属性在 WPF 中究竟是如何工作的?

对于附加属性如何将它们的值实际传递给父元素或子元素,我感到有些困惑。TextElement.FontFamily导致子元素继承分配给该属性的值(看似下游操作,父到子)。Grid.Column导致父项在特定位置显示该子项(看似上游操作,子项到父项)。附加属性值如何知道向上或向下流动?我对此的理解是不正确的,还是缺少可以将所有这些都纳入视野的部分?