Frage

Ich habe eine einfache Benutzerkontrolle

XAML:

<UserControl x:Class="GraemeGorman_Controls.Navigation.NavigationItem"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Border x:Name="borderLayoutRoot">
        <TextBlock x:Name="textBlockCaption" Text="{Binding Caption}" />
    </Border>
</UserControl>

Cs:

namespace GraemeGorman_Controls.Navigation
{
    public partial class NavigationItem : UserControl
    {
        public static readonly DependencyProperty CaptionProperty = DependencyProperty.Register(
            "Caption",
            typeof (string),
            typeof (NavigationItem),
            new PropertyMetadata(new PropertyChangedCallback(OnCaptionChanged)));

        public string Caption
        {
            get {return (string)GetValue(CaptionProperty);}
            set {SetValue(CaptionProperty, value);}
        }

        public NavigationItem()
        {
            InitializeComponent();
        }

        private static void OnCaptionChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            //null
        }
    }
}

Was mein Problem ist, wenn ich eine Instanz der Kontrolle erstellen zeigt die Beschriftung nie - jetzt habe ich die Eigenschaft in der OnCaptionChanged Funktion e.NewValue getestet habe, und es ist der richtige Wert. Was ist falsch mit meiner Bindung?

Wenn ich in dem Code hinter Caption-Eigenschaft für Satz schreiben

textBlockCaption.Text = value;

Es scheint in Ordnung ...

Jede Hilfe willkommen

Danke Graeme

War es hilfreich?

Lösung

Von der Code-behind sieht es aus wie Sie eine Zeile Code fehlen.

Versuchen DataContext = this; in Ihrem Konstruktor hinzuzufügen. Das hat für mich in der Vergangenheit gearbeitet hat.

Andere Tipps

Wie erstellen Sie die Instanz der NavigationItem Kontrolle?

Sie werden so etwas wie tun müssen:

<Page ...
  xmlns:gg="clr-namespace:GraemeGorman_Controls.Navigation">

<gg:NavigationItem Caption="FooBar" />

oder auch

<gg:NavigationItem Caption="{Binding Path=TheCaption}" />

wo TheCaption ist eine Eigenschaft Ihrer Seite Datacontext (zB Ihr Ansichtsmodell)

Hope this helps:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top