내 응용 프로그램에서 다른 I/O 장치 모음이 필요합니다. 직렬, OPC, USB 장치 등. MEF 프레임 워크를 사용하여 컬렉션을 처리하고 새로운 장치를 추가 할 수있는 방법을 제공했습니다.바인딩을 사용하여 이름으로 컨트롤을로드 할 수 있습니까?
내 프로젝트는 다음과 같은 : 장치 인터페이스는 장치 구성의 편집을 처리 사용자 지정 컨트롤과 해당 뷰 - 모델에 대한 경로를 노출 있도록
Atf.Model 'contains the model
Atf.Gui 'the views and view-models
Atf.Devices 'contains implementations of IDevice and exports them
많은 장치가 구성이 필요합니다. MVVM 패턴을 고수하고 가능한 한 뷰와 모델을 분리하려고합니다. 동시에 장치 컬렉션에 대한 연결을 가능한 한 느슨하게 유지하려고합니다.
Atf.Gui
에는 발견 된 모든 장치를 표시하고 활성화 된 장치를 표시하는 컨트롤이 있습니다. 활성화 된 장치를 선택하면 해당 편집기를 동적으로 표시하려고합니다.
어떻게하면됩니까? 다음은 몇 가지 아이디어입니다.
아이디어 -1 기기 객체의 경로를 사용하여 뷰 모델에 UserControl
을로드하기 만하면됩니다. 이것은 MVVM 분리를 깨고
public System.Windows.Controls.UserControl ConfigureControl
{
get
{
// code to load the UserControl using the path property
}
}
아이디어-2
장치 만 뷰 - 모델을 노출하고 뷰를 데리러 (장치 저장소에 정의) 매핑을 사용 가지고 그 부분 '검증 할'렌더링 것이다. 이것이 어떻게 이루어질 지 확신하지 못합니다. 제 감안<myeditorcontainer>
<ContainerControl Content="{Binding CurrentlySelectedDeviceViewModel}"/>
</myeditorcontainer>
아이디어 -3-
는 결합하여 컨트롤로드. 이것이 가능한지 확실하지 않습니다.<myeditorcontainer>
<UserControl Path="{Binding CurrentlySelectedDeviceViewPath}"
DataContext="{Binding CurrentlySelectedDeviceViewModel}"/>
</myeditorcontainer>