问题标签 [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.
c# - InitializeComponent() 有什么作用,它在 WPF 中是如何工作的?
有什么作用InitializeComponent()
,它在 WPF 中是如何工作的?
一般来说,首先,但我特别想知道构造顺序的血腥细节,以及当有附加属性时会发生什么。
wpf - PreviewCanExecuteEvent 未执行
我的 WPF 程序有问题。我正在尝试创建一个对象,它将处理程序添加到同一范围内的所有控件。
以下行不起作用。未处理该事件。
我还有一个绑定到按钮的命令。所以我的想法是我希望命令的 CanExecute 运行:这很好用。我还想要 PreviewCanExecute 的处理程序:这不起作用。
很抱歉,我无法更好地解释。
请参阅下面的代码:
XAML:
PermissionScope.cs
我真的一点帮助都没有。
最好的问候,迈克尔
c# - 在后面的代码中更改 Canvas.Left 属性?
我的 XAML 中有一个矩形,想Canvas.Left
在后面的代码中更改它的属性:
但这不起作用:
有谁知道这样做的语法是什么?
c# - 为每个后面的代码添加附加属性的 DataBinding
我想为附加的属性添加每个 Codebehind 的 DataBinding,并希望Canvas.Left
在 TextBox 中显示该属性。如何添加此属性?
c# - 使用 Setter 更新样式触发器中的自定义附加属性
我正在尝试附加属性和样式触发器,希望了解更多信息。我编写了一个非常简单的带有附加属性的 WPF Windows 应用程序:
我正在尝试使用按钮样式部分中定义的属性触发器来更新“某物”附加属性:
但是,我不断收到以下编译错误:
错误 MC4003:无法解析样式属性“某事”。验证所属类型是否为 Style 的 TargetType,或使用 Class.Property 语法来指定 Property。第 10 行位置 29。
我不明白为什么它会给我这个错误,因为我确实在该部分的标签中使用了“Class.Property”语法。谁能告诉我如何解决这个编译错误?
c# - 丢失数据上下文的附加集合项
我创建了一个附加属性 AttachedBehaviorsManager.Behaviors,它将用作将事件与命令联系起来的 MVVM 帮助器类。该属性属于 BehaviorCollection 类型(ObservableCollection 的包装器)。我的问题是行为命令的绑定总是最终为空。当在按钮上使用时,它工作得很好。
我的问题是为什么我在集合内的项目上丢失了我的 DataContext,我该如何解决?
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 中正确存储和访问。
谁能解释这个问题实际上是什么?我不明白异常消息的含义,因为 AttachedProperty 是一个 DependencyProperty,而 DataGrid 和 DataGridColumn 都是 DependencyObjects。
有没有办法将 ValidationValue AttachedProperty 绑定到 MultiBinding?如果没有,是否有其他 WPF 机制可以让我存储绑定的结果,以便我的 DataGridCell 样式可以读取它?
wpf - RegisterAttached String PropertyName 导致 AttachedProperty 不触发
我遇到了附加属性的一个奇怪问题,当我在调用 RegisterAttached 中分配属性名称并正确命名附加属性的名称(比如 TranslateProperty 和“Translate”)时,附加属性实现的代码不会不开火。就是不叫。如果我将字符串名称更改为 Translate 以外的任何其他名称(比如“Translate_”),代码就会被调用。
这是实现:
公共类 TranslateExtension : DependencyObject {
由于字符串中的属性是 Translate_,因此上述内容实际上有效。如果我将字符串值更改为“翻译”,它会失败。
我在同一个类中有 2 个其他附加属性,它们表现出完全相同的行为 - 与 AttachedProperty 名称相同,它们不会被调用。将其命名为其他名称,它就可以工作。
我不确定这里发生了什么。我的代码实际上是在使用无效的名称,但我不明白为什么,更重要的是我不确定这个错误的命名是否会导致任何副作用。
谁能看到我是否忽略了一些非常明显的东西?我在 AttachedProperties 的文章中重新审视了一些示例,但我没有看到那些使用特殊名称的实现——它们总是将字符串属性命名为与附加属性相同的名称。
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
,上面的代码应该可以工作,对吧?
wpf - 附加属性在 WPF 中究竟是如何工作的?
对于附加属性如何将它们的值实际传递给父元素或子元素,我感到有些困惑。TextElement.FontFamily
导致子元素继承分配给该属性的值(看似下游操作,父到子)。Grid.Column
导致父项在特定位置显示该子项(看似上游操作,子项到父项)。附加属性值如何知道向上或向下流动?我对此的理解是不正确的,还是缺少可以将所有这些都纳入视野的部分?