WPF Bağlama ve değişkenler ile oynuyorum. Görünüşe göre bir kişi yalnızca DependencyProperties'i bağlayabilir. Gayet iyi çalışır aşağıdaki malzemeleri geldi: arka planda kodlama dosya:WPF Bağlayıcıya Bağımlılık/BağımlılıkProperty
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>
iki TextBoxes birini bir başka güncelleyin. Ve Düğme bunları "AAA" olarak ayarlar.
Ancak şimdi Setter işlevini, yorumlanmış olanla değiştirdim (verilen değerin bazı işlemlerini simüle ederek). Özellik değeri değiştiğinde "BBB" ye sıfırlanmasını beklerim. Düğmeye bastığınızda bunu yaparsınız, bu, özelliği kod olarak ayarladığınız zamandır. Ancak, WPF Bağlamaları'nı etkilemeyen bir sebepten dolayı, TextBox içeriklerini ve dolayısıyla mülkü değiştirebiliyorsunuz, ancak Setter asla çağrılmıyor. Bunun neden böyle olduğunu merak ediyorum ve beklenen davranışa nasıl ulaşılacağını merak ediyorum.
olası yinelenen kullanmak zorunda olduğuna dikkat Setters ile belirlenemeyen bildirimler?] (http://stackoverflow.com/questions/3836076/wpf-xaml-property-declarations-not-being-set-via-setters) –