WPF Binding-variable / DependencyProperty

Ich bin Herumspielen mit WPF Verbindlich und Variablen. Anscheinend kann man nur binden DependencyProperties. Ich habe kommen mit dem folgenden, das funktioniert einwandfrei:
Die code-behind-Datei:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    public string Test
    {
        get { return (string)this.GetValue(TestProperty); }
        set { this.SetValue(TestProperty, value); }
        //set { this.SetValue(TestProperty, "BBB"); }
    }
    public static readonly DependencyProperty TestProperty = DependencyProperty.Register(
      "Test", typeof(string), typeof(MainWindow), new PropertyMetadata("CCC"));

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show(Test);
        Test = "AAA";
        MessageBox.Show(Test);
    }
}

XAML:

<Window x:Class="WpfApplication3.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"
    Title="MainWindow" Height="350" Width="525"
    DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid>
    <TextBox Height="31" HorizontalAlignment="Left" Margin="84,86,0,0" Name="textBox1" VerticalAlignment="Top" Width="152" 
             Text="{Binding Test, Mode=TwoWay, diag:PresentationTraceSources.TraceLevel=High}"/>
    <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="320,85,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
    <TextBox Height="31" HorizontalAlignment="Left" Margin="84,138,0,0" Name="textBox2" Text="{Binding Test, Mode=TwoWay}" VerticalAlignment="Top" Width="152" />
</Grid>

Die zwei Textfelder aktualisieren einen anderen. Und die Taste die Einstellung zu "AAA".

Aber jetzt habe ich ersetzt die Set-Funktion ist auskommentiert (Simulation einige manipulation der angegebene Wert). Ich würde erwarten, dass, wenn der Wert der Eigenschaft geändert wird, wird es wieder auf "BBB". Es tut dies, wenn Sie drücken Sie die-Taste, wenn Sie die Eigenschaft im code. Aber es funktioniert aus irgendeinem Grund nicht auf die WPF-Bindings, das heißt, Sie können ändern, der Inhalt der TextBox und damit das Eigentum, aber anscheinend ist der Setter wird nie genannt.
Ich Frage mich, warum das so ist, und wie man mit würde zu erreichen zu erwartende Verhalten.

InformationsquelleAutor PeterE | 2010-12-28

Schreibe einen Kommentar