问题标签 [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 投票
2 回答
2538 浏览

c# - Silverlight:VisualStateManager.GetVisualStateGroups 没有,我怎样才能得到它们?

我已经尝试VisualStateManager.GetVisualStateGroups在我的自定义行为的OnAttached覆盖中使用,以及AssociatedObject.Loaded在该行为中添加到事件的事件处理程序中使用。两次我都得到一个空列表。

是否有另一种方法来获取为控件定义的视觉状态组,或者我应该附加到另一个事件处理程序?

被问到,是的,控件有VisualStateGroupsVisualStates

0 投票
1 回答
521 浏览

wpf - 绑定 - 使用行为时的 UpdateSource

我编写了一个绑定到我的 ViewModel 以获取特定值的行为。我想在行为的 Associated 对象失去焦点时显式更新源,但是我无法访问绑定以对行为执行 UpdateSource,因为该行为不是框架元素(当然)。我曾考虑在附加行为时在代码中创建一个新绑定并保留对它的引用,但想知道是否有更好的方法。有任何想法吗?

提前致谢。

0 投票
1 回答
1921 浏览

wpf - 附加的命令行为和 LostFocus

我正在使用此处描述的方法将 ViewModel ICommand 附加到组合框的 LostFocus 事件,方法是设置CommandBehavior.RoutedEventName="LostFocus". 我预计事件会在触发绑定的同时UpdateSourceTrigger=LostFocus触发,但事实并非如此。

每当键盘选项卡离开时,或者在用户通过单击从下拉列表中实际选择一个项目后, selecteditem BindingUpdateSourceTrigger=LostFocus就会触发(不知道为什么这会导致失去焦点,但至少它会在做出选择后触发)。

只要用户单击组合框,附加的行为事件就会触发。立即地。如果使用键盘,它会正常运行,当您离开它时会触发。但是,当使用鼠标时,当控件获得焦点时触发事件,甚至在用户做出选择之前。有没有办法让这个行为像 lostfocus 对选定项目的行为一样?

编辑:我很好奇是否存在另一个答案,但我通过设置附加绑定找到了解决此问题的方法。SelectedItem 默认更新,处理正常的属性更改通知,并在 lostfocus 上更新 selectedvalue,仅处理我试图运行的命令。绑定看起来像这样:

0 投票
1 回答
2283 浏览

wpf - 如何查找鼠标是否已被捕获

我创建了一个用户控件,其中包含画布和画布上的按钮。为了能够在画布上移动按钮,我附加了如下所示的 DragBehavior:

出于商业原因,如果我按住并拖动画布,我也需要移动画布。我用一个类似的 Behavior 类来完成它,它改变了画布边距,让它看起来好像它随着鼠标指针拖动而移动。此行为还捕获鼠标。

现在的问题是 - 如果我单击并拖动按钮,画布也会获得鼠标事件并开始被拖动。如何确保在拖动按钮时画布行为不会收到鼠标事件。

我尝试将 e.Handled = true 放在 Behaviors 中,但这没有用。

如果我发现鼠标已经被其他对象捕获,我可以在行为中设置条件以不再捕获它。

0 投票
2 回答
239 浏览

silverlight - SL4:需要在 ItemsControl 中的 Item 上注册移动(或重绘)事件

在 FrameworkElement 类中找不到移动事件或重绘事件。谷歌也没有帮助。所以...

我有一个由 VM 中的可观察集合填充的自定义 ItemsControl。ItemsControl 本身利用

行为,以便用户可以拖动整个程序集。

当用户移动装配体时,我希望每个项目都通知我,因为装配体移动导致项目重新定位。到目前为止,我已经尝试注册

但是当我拖动程序集时它似乎没有触发。

仅当我将鼠标放入不够好的项目时才有效。因为我正在移动 ItemsControl,然后必须将鼠标移入该项目才能触发事件。

有任何想法吗?我可以通过 OneOfMyDecendantsWasRedrawn 事件或类似事件的形式向可视化树中的某个祖先寻求帮助吗?我再次尝试在项目移动时收到通知,而不是在组件移动时收到通知。

0 投票
1 回答
999 浏览

silverlight - SL4/MVVM:在 VM 中使用 void Foo() 处理 MouseDragElementBehavior.Dragging 事件

我正在尝试处理我拥有的控件上的 MouseDragElementBehavior.Dragging 事件。请参阅此处了解我为什么要这样做的背景。

我在连接这个事件时遇到了麻烦。从 XAML 中,您可以看到我已向用户控件添加了一个行为。然后我尝试通过 CallMethodAction EventTrigger 将处理程序添加到行为上的 Dragging 事件。

我尝试了以下方法签名,但没有成功:

任何人都有使用触发器来处理附加行为中的事件的经验?

0 投票
1 回答
822 浏览

wpf - 公共与私有 AttachedProperties

拥有AttachedPropertiesas privatevs有什么意义public?通常它被定义为(示例):

但我也看到了一些属性的例子private static readonly...

CommandProperty如果我将上述内容更改为现在,会有什么后果private?如果我这样做,它似乎在我的 XAML 智能感知中仍然可用。我在这里想念什么?

0 投票
1 回答
2595 浏览

jquery - drupal 7将行为附加到ajax内容

所以...我通过 ajax 将节点表单加载到另一个页面中。我尝试附加这样的行为:

问题是什么都没有发生。表单没有附加任何行为(自动完成、可折叠字段集、可拖动文本区域等)

0 投票
2 回答
100 浏览

c# - .NET 框架中是否有任何附加属性或附加行为?

我基本上很好奇任何 Microsoft 代码(.NET Framework)是否有任何显示附加属性和附加行为的文件。我知道互联网上有很多例子,但我更想知道微软是如何编码的。

0 投票
1 回答
719 浏览

data-binding - 在多个视图中绑定到所选项目的 ObservableCollection(MVVM,SL5)

我正在使用带有 Silverlight 5 的 MVVM。我想要实现的是ListBox在一个视图中选择项目(例如 ListView.xaml)并ListBox在另一个视图中显示所选项目(例如 SelectionView.xaml)。

我选择的项目位于通过附加行为创建的ObservableCollection<MyItem>(称为)中,如本答案中所述SelectedItems

问题似乎是我使用了两个不同的 XAML 文件。如果我在选择发生的同一个 XAML 文件中绑定ListBox到,则项目会在同一个视图中显示在另一个中,而不会出现问题。但在不同的文件中,保持为空。SelectedItemsListBoxListBox

两个视图都使用与ViewModelDataContext 相同的内容。

对于正确方向的一些指示,我会非常高兴。我是 SL 的新手,所以也许我遗漏了一些明显的东西。

这是有效的代码:

列表视图.xaml

这段代码只给出了一个空列表框:

选择视图.xaml

PS:语法高亮设置为 language-all: lang-xml 但似乎不起作用?