问题标签 [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 回答
4528 浏览

wpf - 如何在新项目中使用 AttachedCommandBehavior?

我已经下载了这个 AttachedCommandProject并运行了它,它运行良好,使我能够在 Border 元素上放置一个 MouseDown 命令,并在我的 ViewModel 中使用一个命令来处理它。

现在我想将此 AttachedCommand 功能添加到我的MVVM Visual Studio 模板中。

我将所有必要的文件复制到了 MVVM 项目的我的 Commands 文件夹中:

但是当我尝试使用与原始项目相同的语法时,我收到错误XML 命名空间“clr-namespace:MvvmWithAttachedBehaviors.Commands”中不存在属性“CommandBehavior.Event”。.

据我所知,没有其他文件要复制,也没有其他参考要添加。

这个错误可能试图告诉我什么?有没有人让这个 AttachedCommandBehavior 功能在其他项目中工作?

0 投票
2 回答
5568 浏览

wpf - 如何将两个附加行为附加到一个 XAML 元素?

我已经实现了在此处找到的附加命令行为模式,它可以很好地允许边框具有在 ViewModel 中触发的左键或右键单击事件:

XAML:

代码背后:

但是,如何将两个附加行为附加到一个元素,例如,我想做类似以下的事情,但它当然会给我一个错误:

0 投票
3 回答
59949 浏览

wpf - 你如何处理 MVVM 中的 ComboBox SelectionChanged?

对于那些做纯 MVVM 的人,你如何处理 ComboBox SelectionChanged 事件而不恢复到后面的代码?

我尝试了例如AttachedBehaviors但不支持 Event="SelectedChanged":

0 投票
2 回答
9295 浏览

c# - WPF 中的自定义附加事件

我可能在这里弄错了术语,但我想我正在尝试创建一个附加事件。

在 Surface SDK 中,您可以执行以下操作:

我想创建一个自定义事件,可以以相同的方式在 XAML 中为其添加处理程序,但我遇到了麻烦。

我可以创建自定义路由事件,但 XAML 智能感知看不到它,并且如果我只是定期键入它,则不会添加事件处理程序。这是我的事件定义:

我只是把这一切都错了吗?我看到的所有“附加行为”示例更多的是关于添加附加属性,然后使用设置该属性的元素进行操作。

0 投票
3 回答
7845 浏览

c# - 减少 MVVM WPF 应用程序中附加属性、命令等的样板代码?

我正在开发一个 WPF MVVM 应用程序。我注意到的是,我必须编写大量的样板代码来声明命令(通过 WPF 团队的 MVVM 工具包中的 DelegateCommands)、附加属性和附加行为。是否有任何策略可以减少我必须编写的样板代码量?

谢谢!

0 投票
2 回答
1211 浏览

wpf - WPF - 随机挂起文件浏览器附加行为

我有一个这样定义的附加行为,..

这是一个很好的简单附加行为,当您单击文本框时会弹出打开 OpenFileDialog 并在完成后将文件名放入框中。

它可能在 40% 的时间内工作,但其余时间整个应用程序都会挂起。此时的调用堆栈如下所示 -

WindowsBase.dll!MS.Win32.UnsafeNativeMethods.GetMessageW(ref System.Windows.Interop.MSG msg, System.Runtime.InteropServices.HandleRef hWnd, int uMsgFilterMin, int uMsgFilterMax) + 0x15 bytes
WindowsBase.dll!System.Windows.Threading。 Dispatcher.GetMessage(参考 System.Windows.Interop.MSG msg,System.IntPtr hwnd,int minMessage,int maxMessage)+ 0x48 字节 WindowsBase.dll!System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame 帧= {System.Windows.Threading.DispatcherFrame}) + 0x8b 字节 WindowsBase.dll!System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame 帧) + 0x49 字节
WindowsBase.dll!System.Windows.Threading。 Dispatcher.Run() + 0x4c 字节
PresentationFramework.dll!System.Windows.Application.RunDispatcher(对象忽略) + 0x1e 字节
PresentationFramework.dll!System.Windows.Application.RunInternal(System.Windows.Window 窗口) + 0x6f 字节 PresentationFramework.dll!System.Windows.Application。 Run(System.Windows.Window window) + 0x26 bytes PresentationFramework.dll!System.Windows.Application.Run() + 0x19 bytes Debugatron.exe!Debugatron.App.Main() + 0x5e bytes C# [Native to Managed Transition]
[管理到本地转换]
mscorlib.dll!System.AppDomain.nExecuteAssembly(System.Reflection.Assembly 程序集,string[] args) + 0x19 字节 mscorlib.dll!System.Runtime.Hosting.ManifestRunner.Run(bool checkAptModel) + 0x6e 字节 mscorlib.dll!System .Runtime.Hosting.ManifestRunner.ExecuteAsAssembly() + 0x84 字节 mscorlib.dll!System.Runtime.Hosting.ApplicationActivator.CreateInstance(System.ActivationContext activationContext, string[] activationCustomData) + 0x65 字节 mscorlib.dll!System.Runtime.Hosting。 ApplicationActivator.CreateInstance(System.ActivationContext activationContext) + 0xa 字节 mscorlib.dll!System.Activator.CreateInstance(System.ActivationContext activationContext) + 0x3e 字节
Microsoft.VisualStudio.HostingProcess.Utilities.dll!Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone() + 0x23 字节
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(对象状态) + 0x66 字节
mscorlib.dll!System.Threading。 ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback 回调, 对象状态) + 0x6f 字节
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart() + 0x44 字节

现在,我以前在做一些异步事情时见过这种事情,但那时还没有发生。唯一活着的线程是 UI 线程!此外,当它挂起时,我总是得到最后一个调试语句。

谁能指出我正确的方向?这个快把我逼疯了!

0 投票
2 回答
5145 浏览

wpf - 附加属性和绑定

我正在创建附加行为以设置类的常规属性:

在这里,MyControl 上的 ItemsSource 属性是一个常规属性,因此我无法在 Xaml 中绑定它,因此存在这种附加行为。

现在,当我使用字符串或对象使用此附加属性时,它可以工作并且我设置的断点被命中,但是当我使用绑定标记设置它时,它永远不会运行。为什么这不起作用?

我需要做的是将 ItemsSource 属性设置为 Binding 指定的值。

0 投票
1 回答
307 浏览

wpf - 如何公开 xaml 属性?

我创建了一个 ComboBox 子类并添加了我的功能。

现在我想公开 TextBox 的外部属性,例如:

这可能吗,我可能没有选择错误的特定属性,但我想你明白我的意思。

这可能吗?
我必须单独创建所有属性吗?

0 投票
2 回答
3699 浏览

wpf - 单元测试附加行为 wpf

我仍然在探索一般的附加行为,并且不知道如何为一个人编写单元测试。

我在下面粘贴了一些来自 Sacha Barber 的 Cinch 框架的代码,该框架允许通过附加行为关闭窗口。有人可以给我看一个示例单元测试吗?

谢谢!
绿柱石

0 投票
1 回答
2141 浏览

silverlight - Silverlight 鼠标拖动元素行为。拖放后如何重新排列项目?

我有带有自定义控件的堆栈面板。用户可以添加或删除项目。

我已将 MouseDragElementBehavior 附加到每个项目。所以现在用户可以在堆栈面板中移动它们。

然而,这些项目现在以任意方式排列。真是一团糟。他们留在用户离开他们的地方。

我现在需要的是让它们像堆栈面板应该的那样堆叠......很好地一个接一个......

所以我需要简单地让用户使用拖放操作更改项目的顺序,但项目必须精确堆叠。

有 DragFinished 事件,但我并没有真正看到 Behavior 如何移动项目。我认为它是 Margin 它会改变,但 margins 保持 0 ......我不知道下一步该做什么。

感谢一点帮助。