WPF 응용 프로그램에 MVP 패턴을 사용하고 있습니다. ObjectDataProvider를 내 View의 생성자에서 설정 한 Presenter 객체로 설정하고 싶습니다. 그런 다음 발표자 속성에 대한 제 컨트롤에 바인딩하고 싶습니다.ObjectDataProvider를 뷰의 속성으로 설정하십시오.
내가 이렇게 내 ObjectDataProvider를 정의 :
<Window.Resources>
<ObjectDataProvider x:Key="pres" ObjectType="{x:Type local:MyPresenter}"/>
</Window.Resources>
<Grid DataContext="{Binding pres}" >
<ComboBox Name="_fileTypes" SelectedValuePath="Key" DisplayMemberPath="Value"
ItemsSource="{Binding Path=FileType}"/>
</Grid>
및
public partial class MyView : Window
{
public ViewPresenter MyPresenter { get; set; }
public Dictionary<int, string> FileNames { get; private set; }
public MyView()
{
InitializeComponent();
this.ViewPresenter = new MyPresenter(this, (IService)ObjectFactory.GetInstance<IService>());
this.FileType = GetFileTypes();
}
}
는 불행하게도 ObjectDataProvider이 올바르게 설정하지 않는 것 내 콤보 상자는 비어 있고 나는 this.Resources을 [검사 할 때 "pres"] 얻을 수 :
{System.Windows.Data.ObjectDataProvider}
base {System.Windows.Data.DataSourceProvider}: {System.Windows.Data.ObjectDataProvider}
ConstructorParameters: Count = 0
IsAsynchronous: false
MethodName: null
MethodParameters: Count = 0
ObjectInstance: null
ObjectType: {Name = "MyPresenter" FullName = "Test.Presenters.MyPresenter"}
어떻게 내 ObjectDataP를 올바르게 정의해야합니까? MyView의 MyPresenter 속성을 사용하려면 rovider를 사용 하시겠습니까? 나는 일반적으로 뷰의 데이터 컨텍스트를 설정
<Grid DataContext="{Binding {StaticResource Presenter}}" />
완벽하게 작동했습니다. - James에게 감사드립니다. – openshac