Immer Wert von ViewModel durch DataContext OHNE Bindung?

Neu in WPF. Ich Schaffe Benutzersteuerelemente, müssen Sie Lesezugriff auf die ViewModel-Zustand, Ihr Ding zu machen. Derzeit nutze ich folgende Technik:

public partial class ControlBar : UserControl
{

    private static readonly DependencyProperty URLProperty =
        DependencyProperty.Register("URL", typeof(string), typeof(ControlBar),
        new UIPropertyMetadata(null));

    public ControlBar()
    {
        InitializeComponent();

        SetBinding(URLProperty, "CurrentPage.URL");

        Pin.Click += Pin_Click;       
    }

    private void Pin_Click(object sender, RoutedEventArgs e)
    {
        var URL = (string)GetValue(URLProperty);

    }
}

Ist dies der richtige Weg und ist es nicht übertrieben zu einrichten, eine langfristige Bindung für jede variable, die ich brauchen Zugang zu? Oder können Sie etwas tun:

GetValue(new Path("CurrentPage.URL..... 

Ich habe die oben natürlich.

Dank!

  • Warum nicht geben Sie die Bindungen in XAML? Sie würde die Notwendigkeit zur Umsetzung der DP vollständig funktionieren kann (getter/setter)
  • Ich könnte das set-up die Bindung im XAML-Code. Es ist nicht das set-up, das mich betrifft. Es ist die Notwendigkeit für 'Platzhalter' DependencyProperties in jedem Benutzer die Kontrolle, für den alleinigen Zweck der Zugriff auf das viewmodel. Diese DPs sind privat, so haben Sie keine andere Verwendung.
  • Ich würde vorschlagen, dass, wenn Sie schreiben ein benutzerdefiniertes Steuerelement, das sich auf view-model-Eigenschaften, diese sollen ausgesetzt werden, als öffentlich einstellbaren Eigenschaften für das Steuerelement
  • Warum? Wenn es ein Stück von Informationen, dass 29 Personen zugreifen müssen, um Ihre Arbeit zu tun, deshalb würden alle 29 Personen aussetzen, die gleichen Informationen öffentlich. z.B. ein flag für "Benutzer ist angemeldet?" Scheint, wie Umweltverschmutzung. Es sollte ausgesetzt werden, durch eine einzelne Person... Die 29 sollten nur dann aussetzen, Dinge, die ein Elternteil angepasst werden können, Ihrem individuellen Verhalten.
  • Ohne zu wissen, mehr über die Besonderheiten kann ich nicht wirklich kommentieren, aber wenn Sie schreiben ein Steuerelement, das ändert sein Verhalten, basierend auf einem Wert, dann denke ich nicht, dass es unvernünftig ist für die Steuerung zu setzen, dass Wert.
  • Naja auf jeden Fall... Es gibt keinen anderen Weg, um die Daten aus dem viewmodel ich fange an zu sammeln. Ich brauche einen DP + Bindung?
  • Sie könnten versuchen, ein paar andere Dinge, aber ich habe nicht versucht, Sie selbst. Eine wäre, zu reagieren, um die Steuerelemente DataContext Eigenschaft geändert wurde (diese wird auf die view-Modell-Instanz). Anderen möglicherweise die Verwendung einer einzelnen Eigenschaft auf den Wert des view-Modell-in seiner Gesamtheit und verwenden Sie dann den Wert zu ziehen aus alle Eigenschaften, die Sie brauchen - es ist noch einige binden, aber nicht eine für jeden Wert.
  • Danke. Ich gebe diesen einen Versuch.

Schreibe einen Kommentar