Question

J'utilise le modèle de MVP pour mon application WPF. Je voudrais mettre l'ObjectDataProvider être l'objet Présentateur que je paramètre dans le constructeur de mon point de vue. Je voudrais ensuite lier à mes contrôles aux propriétés du présentateur.

Je l'ai défini mon ObjectDataProvider comme ceci:

<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>

et

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();
    }
}

Malheureusement, le ObjectDataProvider ne semble pas être correctement réglée, mon ComboBox est vide et quand je visite this.Resources [ « pres »] je reçois:

{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"}

Comment dois-je définir correctement mon ObjectDataProvider à utiliser la propriété MyPresenter de mon point de vue?

Était-ce utile?

La solution

Normalement, je mis le contexte des données de la vue.

publiv MyView () { this.DataContext = nouveau modèle (); }

Modèle de classe { SomeProperty public int {get; set;} }

Cela vous permettra de lier les propriétés du modèle comme celui-ci;

Autres conseils

Afin de se lier à une ressource, vous devez utiliser la syntaxe suivante:

<Grid DataContext="{Binding {StaticResource Presenter}}" />
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top