내 문제는 매우 간단하지만 모든 옵션이 나를 혼란스럽게합니다 ...단일 지역에 비헤이비어를 추가하려면?
내 MEF/프리즘 응용 프로그램에서 한 특정 영역에 특정 동작을 첨부하고 싶습니다. doumentation은 당신이 그렇게 할 수 있다고 말합니다 :
IRegion region = regionManager.Region["Region1"];
region.Behaviors.Add("MyBehavior", new MyRegion());
하지만 어디에 넣어야합니까? 부트 스트 래퍼 (bootstrapper) 방법으로 수행해야하는 장소가 있습니까? 현재, 셸의 Loaded-event에 다음과 같은 동작을 추가하고 있습니다.
/// <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()
)과 같은 위치에서 수행되도록 차라리 작업을 수행 할 것입니다.
그래서 질문 : 하나의 단일 영역에 동작을 추가하는 가장 좋은 장소는 어디입니까?
, 그러나 적어도 그 그 트릭을 수행하고 2 달 내에 무슨 일이 벌어지고 있는지 이해하고 싶다면 투명하다.) 나는 나머지 부분을 정리하는 "메타 행동"을 설정하는 생각을 좋아한다. 어떤 행동을 어느 영역에 붙여야하는지 정의하십시오. XAML에서 동작을 연결하는 방법에 대해 생각했지만 실제로 생각할 시간이 없습니다. 어쨌든, 고마워! – Marc
나는 그것에 대해 꽤 많이 생각하고있다. 다시 한번 생각해 볼 시간이 없다.이 작품은 훌륭하지만별로 좋지는 않지만 어떤 지역에서 무엇을하고 있는지에 대한 간단한 이해에 도움이된다. 만약 내가 더 좋은 것을 생각해 낼 시간이 있다면 여기에 다시 게시 할 것입니다. –
약간 개선 된 버전의 솔루션을 올렸습니다. 어쩌면 너는 관심이있어. – Marc