我的問題很簡單,但所有選項都讓我困惑......我在哪裏添加行爲到單個區域?
在我的MEF/Prism應用程序中,我想將特定行爲附加到一個特定區域。該doumentation說,你可以這樣做:
IRegion region = regionManager.Region["Region1"];
region.Behaviors.Add("MyBehavior", new MyRegion());
但我應該把這個?有沒有地方,這應該是在引導程序的方法?目前,我在外殼的加載事件添加的行爲是這樣的:
/// <summary>
/// Interaction logic for Shell.xaml
/// </summary>
[Export(typeof(Shell))]
public partial class Shell
{
[ImportingConstructor]
public Shell(IRegionManager regionManager, ElementViewInjectionBehavior elementViewInjectionBehavior)
{
InitializeComponent();
Loaded += (sender, args) =>
{
IRegion region = regionManager.Regions[RegionNames.ElementViewRegion];
region.Behaviors.Add("ElementViewInjection", elementViewInjectionBehavior);
};
}
}
這是一個很好的解決方案。我寧願在引導程序中執行此操作,以便與其他區域行爲註冊(ConfigureDefaultRegionBehaviors()
)在同一位置完成。
所以,問題:哪裏是將行爲添加到單個區域的最佳位置?
這仍然算不上令人滿意,但至少其一個務實的方法,如果你想了解在幾個月內發生的事情,這個技巧就會變得透明,而且是透明的;)我喜歡設置一個「元行爲」來區分其餘的問題,儘管問題仍然在哪裏定義哪些行爲必須附加到哪些區域。我想到了一種在XAML中附加行爲的方式,但我現在沒有時間思考。 Anway,謝謝! – Marc
我對此很感興趣,再次我沒有時間思考這個問題 - 這種方法雖然不是很好,但它可以幫助我們簡單理解哪些地區正在做什麼。如果我有時間找出更好的東西,我會回到這裏:) –
我發佈了一個稍微改進的解決方案。也許你有興趣。 – Marc