[英]Binding WPF Events to MVVM ViewModel Commands in code behind of View
我在XAML方面獲得了以下解決方案,可以將事件綁定到命令, 並且效果很好 。
參考文獻
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
按鈕定義:
<Button>
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseEnter" >
<i:InvokeCommandAction Command="{Binding FooCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
問題:現在我需要為我的對象( FrameworkElementFactory)在代碼后面做同樣的事情,但是我無法弄清楚,我想也許有人可以幫助我。
這是我停下來的地方:
FrameworkElementFactory newLabel = new FrameworkElementFactory(typeof(Label));
newLabel.SetValue(Label.BackgroundProperty, Brushes.DarkMagenta);
var eventTrigger = new System.Windows.Interactivity.EventTrigger("MouseDown");
var invokeCommandAction = new System.Windows.Interactivity.InvokeCommandAction()
{
CommandName = "FooCommand",
CommandParameter = new Object()
};
有什么幫助嗎?
在此先感謝,Farzad
不太確定這是否是唯一的方法,但是您可以使用Interaction.GetTriggers
在加載時添加觸發器:
//<Your other code>
eventTrigger.Actions.Add(invokeCommandAction);
RoutedEventHandler loadedHandler = null;
loadedHandler = new RoutedEventHandler((s, _) =>
{
var label = s as Label;
var triggers = Interaction.GetTriggers(label);
triggers.Add(eventTrigger);
label.Loaded -= loadedHandler;
});
newLabel.AddHandler(FrameworkElement.LoadedEvent, loadedHandler);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.