我有一個我正在研究的程序,有多個窗口。這些窗口在功能上是相似的,我希望有一個事件處理程序來覆蓋應用程序中每個窗口的按鈕按下事件。這可能嗎?跨多個窗口的XAML C#功能
1
A
回答
1
如果您需要在代碼後面綁定一個處理程序,您可以通過委託封裝一個處理程序,並注入到所需的Windows中。
例如使用Action<T>
:
Action<string> commonHandler = (parameter) =>
{
// handler code here
};
class MyWindiow
{
public MyWindiow(Action<string> handler)
{
// store to local and assign to button click
// button.CLick += (o, e) => { handler(parameterToBepassed); }
}
}
0
我會考慮使用一個框架,以幫助你在這裏。我的最愛是Prism v4。
如果你按照M-V-VM的設計模式,你的生活將會變得更加簡單。你需要了解Data Binding and DataContext。
話雖這麼說,如果你決定走這條路,你可以每個窗口綁定到一個命令:
<Button Command="{Binding DoFooCommand}" Content="DoFoo"/>
你視圖模型將有一個DelegateCommand成員來執行。
public class SomeViewModel : NotificationObject
{
public SomeViewModel()
{
DoFooCommand = new DelegateCommand(ExecuteFoo);
}
public DelegateCommand DoFooCommand { get; set; }
private void ExecuteFoo()
{
//Use the EventAggregator to publish a common event
}
}
最後,在解決方案中的其他地方,你將有一個代碼文件/類,訂閱事件,等待有人來發布來處理這事件。
public class SomeOtherPlace
{
public SomeOtherPlace()
{
//Use the EventAggregator to subscribe to the common event
}
public void FooBarMethodToCallWhenEventIsPublished(SomePayload payload)
{
//Do whatever you need to do here...
}
}
我知道的一些事情被排斥在外(如什麼是「SomePayload」是...看看到EventAggregator信息),但我並不想進入太多。只要給你一份關於去哪裏尋找信息和一些基本代碼的指南。如果您決定使用EventAggregator,那麼您需要確保您的訂閱調用和發佈調用正在使用EventAggregator的SAME實例。您可以通過查看MEF來做到這一點。棱鏡被設置爲與MEF完美合作......我不會說謊。做所有這些都需要一點學習曲線,但最終你可以輕鬆地單元測試ViewModels並使代碼鬆散耦合,這將是值得的。 EventAggregator是不同班級彼此溝通而不依賴彼此瞭解的好方法。 MEF非常適合您的服務使用容器,您希望在您的應用程序中使用它。
希望能給你一點關於如何去做你想要在正確的道路上做什麼的見解。
相關問題
- 1. 跨窗口應用功能
- 2. 傳遞XAML窗口類型的功能
- 3. 跨多個日期蜂巢窗口功能範圍
- 4. 跨越多個窗口的Perisistant窗口10個虛擬桌面?
- 5. 2個XAML窗口
- 6. 窗口功能
- 7. Android中的多窗口功能
- 8. 的JavaScript(功能(窗口){})(窗口)
- 9. WPF XAML主窗口dissappears其所謂的使用放映功能
- 10. C#在窗口窗體中有一個窗口的多個GUI
- 11. 窗口功能的附加功能
- 12. c#打印功能隱藏窗口
- 13. 跨江窗口
- 14. 正確的窗口設計XAML(性能)
- 15. 跨多個文件的好友功能
- 16. 跨多個進程的Python threading.Condition()功能
- 17. 窗口滾動多功能執行
- 18. 如何實現多窗口功能?
- 19. 在同一個文件中實現多個窗口的功能?
- 20. PostgreSQL的窗口功能
- 21. Bash出口多個功能
- 22. 打開一個與facebook窗口功能相同的JavaScript窗口
- 23. 多個過剩的窗口,但相同的顯示功能
- 24. WPF/Silverlight - 綁定跨多個XAML
- 25. 跨多個列應用功能
- 26. 跨多個文件運行功能
- 27. C#WPF XAML窗口,消息框中
- 28. C++中的跨平臺透明窗口?
- 29. 多個窗口
- 30. SUMIFS功能跨越多張
項目中的哪個文件應該放置操作代碼? – Will
@威爾:它取決於你的項目結構,以及是否有人手動創建一些窗口。 – sll
這些窗口都是在設計時創建的。我希望有一個解決方案可以讓我在某個地方放置一個函數,比如app.xaml.cs文件,我甚至不知道它是什麼或者它做了什麼,並根據需要在窗口中調用它。我認爲這與我想要的接近,但我仍然不確定如何實施它。 – Will