问题标签 [attachedbehaviors]

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 回答
1016 浏览

c# - 如何在混合中的按钮上使用 DragMoveBehaviorElement(拖动)?

我正在尝试在混合中制作一个可拖动的按钮。在按钮上使用 dragmovebehaviorelement 没有任何作用,我认为这是因为按钮已经使用了 LeftMouseButon_down 事件。

在形状(exp:椭圆)上使用此行为可以正常工作。

有没有办法制作一个可拖动的按钮?

0 投票
1 回答
614 浏览

c# - 无法将 DataContext 中的 ObjectContext 绑定到自定义附加属性

我已附加财产

而且我还有 ViewModel,它的 Context 属性设置为正确的 ObjectContext(用调试器检查)。

这个 XAML 代码:

local 是我的命名空间。

我在 IsFilterableGrid chaged 事件(附加行为)中使用此代码来检索对象上下文:

并且上下文变量总是最终为空。尽管网格的 DataContext 不为空并且指向正确的对象(ViewModel)。

有任何想法吗?我似乎在这件事上失去理智......

编辑:我进行了更多调查,如果我绑定local:FilterableGrid.IsFilterableGrid="{Binding IsFilterable}"它可以完美运行。但local:FilterableGrid.ObjectContext="{Binding Context}"只是没有!也许它与传递的值的类型有关(ObjectContext 而不是字符串或说 bool,它们是原始类型?)?

0 投票
1 回答
3788 浏览

wpf - TextBox.TextChanged Event/ComboBox.TextInput 事件通过 MVVM-commanding

我在过去 2 天里发现有关通过命令触发 TextBox.TextChanged 事件或 ComboBox.TextInput 事件的附加命令行为。但是,我无法得到任何适当的解决方案。

我得到的解决方案之一是通过将 Text 绑定到 ViewModel 属性来调用 UpdateSourceTrigger=PropertyChanged 上所需的方法。

但是,根据 MVVM 的调查结果,属性不应包含除私有成员的 getter 和 setter 之外的任何其他代码,包括 OnPropertyChanged。

所以,任何人都可以帮助我,指导我是否朝着正确的方向前进。或者在某处遗漏了什么。

详细的解释或链接或示例代码将不胜感激。

享受编码,VJ

0 投票
1 回答
5433 浏览

wpf - 将行为绑定附加到 controltemplate 中的元素

我正在向滑块添加附加行为,当拇指被拖动并保持在特定区域上时,这将导致它滚动一些内容。(不能使用简单的 IsMouseOver 触发器,因为 Slider Thumb 具有 MouseCapture。)

该行为具有 3 个属性:

当用户拖动滑块时,IsScrollHoverProperty 被设置为 true,这一切都在 Slider 的 ControlTemplates.Triggers 中完成,并且可以正常工作。

当它设置为 true 时,回调会将 PreviewMouseEnterHandlers 挂接到两个 Rectangle 中,以检测鼠标何时进入它们。

因此,有问题的矩形也在 Slider 的 controltemplate 中定义:

我遇到的问题是将这些矩形绑定到附加的 ScrollRightRect 和 ScrollLeftRect 属性。我尝试了一些事情,并怀疑我犯了一个愚蠢的绑定错误,或者正在尝试做一些不允许的事情。我目前将它们绑定在 controltemplate.triggers 中,如下所示:

我知道这个触发器正在被触发,因为矩形按预期填充红色。谁能从这些片段中发现我做错了什么?

提前致谢。

0 投票
2 回答
3057 浏览

wpf - 在 MVVM 中处理点击事件的最佳方法是什么?

在 MVVM 中处理点击事件的最佳方法是什么?有没有最好的方法?

我找到了两个解决方案:

使用中继命令:

亲:?;对比:如果我要更改诸如焦点之类的 ui 元素,则需要解决事件

附带行为:

亲:你有 RoutedEventArgs 用于 ui 上的更改;对比:访问其他控件?

现在我使用这两种解决方案。按钮中的 RellayCommand(带有用于 ui 更新的事件)和树视图的附加行为,以在用户单击时取消选择树视图项。

0 投票
1 回答
3188 浏览

wpf - Attached behaviors and styles

I use an attached behavior that allows a DoubleClick event to be wired to a command in a view model, as in the binding below:

I need multiple list boxes for a presentation, all of which will need a DoubleClick wired to an EditCommand.

Can I push this behavior into my MasterListBoxStyle? How?

Cheers,
Berryl

0 投票
1 回答
810 浏览

wpf - VB.NET 中的 WPF AttachedCommandsBehavior

谁能给我一个如何实现 AttachedCommands 的例子?

C# 中有一些示例,我认为它与 C# 非常相似,但我在将代码转换为 VB.NET 时遇到了问题。

目前我尝试将 C# AttachedCommand-Class 转换为 VB.net 看起来像这样:

但现在我遇到了问题,GetValue() 和 SetValue() 方法不可用。有任何想法吗?

感谢您的帮助..

0 投票
2 回答
4022 浏览

wpf - 混合行为 - 你能绑定到它们的属性吗?

我目前正在将我创建的一些附加行为迁移到混合行为,以便它们支持在 Expression Blend 中拖放。我注意到 Blend 行为的作者倾向于将行为属性定义为依赖属性。

我创建了一个行为 ,TiltBehaviour它公开了一个TiltFactordouble 类型的公共依赖属性 。在 Expression Blend 中,我可以设置此属性的值,但是,添加“数据绑定 ...”的选项显示为灰色:

无法绑定到行为属性

我还注意到 Behaviors extend DependencyObject,因此它们没有 a DataContext,因此不能继承DataContext它们所附加的元素的 。这对我来说就像一个真正的弱点!

所以,底线是,如果我不能在 Blend 中设置我的行为依赖属性的绑定,并且它不继承 a DataContext,为什么还要使用依赖属性呢?我可以只使用 CLR 属性。

0 投票
2 回答
2956 浏览

wpf - 将 MouseDragElementBehavior 与 ItemsControl 和 Canvas 一起使用

在使用 ItemsControl 和自定义画布时,我目前在使用 Blend SDK 中的 MouseDragElementsBehavior 时遇到问题。我的自定义画布只是根据 DependencyProperty 从其子项中添加或删除 MouseDragElement。当我手动将项目添加到画布的子项时,这工作得很好,但在移动到 ItemsControl 时似乎已经损坏。

我目前正在使用以下 ItemsControl 代码:

在 Canvas.VisualChildrenChanged 方法中添加拖动行为不允许像以前一样移动新创建的对象。

我是否需要将拖动行为添加到传递给 VisualChildrenChanged 的​​ ContentPresenter 之外的其他内容或提供特殊样式?

0 投票
2 回答
668 浏览

c# - Lambda 表达式代表行为

我有一个在列表框上使用的附加行为,如果列表只包含一个元素,它应该自动选择列表中的第一个元素。

我发现在列表更改时挂钩列表框的唯一方法是使用列表框的 itemcollections CollectionChanged 事件:

现在的问题是,无法取消订阅该事件,这可能会导致多次调用SelectAndSetFocusToFirstelement( ).

对此的正常解决方案是不使用 lambdas。但后来我会松开我的列表框,我需要它来选择第一个元素。

关于如何解决这个问题的任何建议?

完整代码