2016-04-04 20 views
0

Bir özellik tarafından doldurulmuş bir metin kutusu var. Düğmeye tıkladığımda özellik değeri değiştirilir ve metin kutusu içeriği de değiştirilmelidir. Ancak mülküm değişti etkinlik çalışmıyor. Buraya bir çözüm için daha önce ve diğer kaynaklarda aradım. Yardımcı olabilecek hiçbir şey bulamadım. Birisi bana yardım edebilir mi?PropertyChanged bağlanmadı

Kodu:

using System.ComponentModel; 

namespace TestWPF { 
    public class Class1 : INotifyPropertyChanged { 

     public event PropertyChangedEventHandler PropertyChanged; 
     protected void OnPropertyChanged(string name) { 
      if (PropertyChanged != null) { 
       PropertyChanged(this, new PropertyChangedEventArgs(name)); 
      } 
     } 

     private string test = "test"; 
     public string TestProperty { 
      get { return test; } 
      set { 
       if (value != test) 
        test = value; 
       OnPropertyChanged("TestProperty"); 
      } 
     } 
    } 
} 

<Window.DataContext> 
<local:Class1/> 
</Window.DataContext> 
<Grid> 
    <TextBox Text="{Binding Path=TestProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" x:Name="textBox" HorizontalAlignment="Center" Margin="0,-100,0,0" Height="69" TextWrapping="Wrap" VerticalAlignment="Center" Width="255"/> 
    <Button x:Name="button" Content="Button" HorizontalAlignment="Center" Margin="0,0,0,0" VerticalAlignment="Center" Width="75" Click="button_Click"/> 
</Grid> 

Düzenleme:

 private void button_Click(object sender, RoutedEventArgs e) { 
     cs1.TestProperty = "Test button"; 
    } 
+0

'cs1' (sanırım bu bir 'Class1' örneğidir)! =' Window.DataContext'; pencere başka bir bağlam için bağlı – ASh

+0

yardımlarınız için teşekkürler –

cevap

0
private void button_Click(object sender, RoutedEventArgs e) 
{ 
     var dc = (sender as System.Windows.Controls.Button).DataContext; 
     var cs1 = dc as Class1; 
     cs1.TestProperty = "Test button"; 
} 

veya

public partial class MainWindow : Window 
{ 

    Class1 cs1; 

    public MainWindow() 
    { 
     InitializeComponent(); 
     DataContext = cs1 = new Class1(); 
    } 

    private void button_Click(object sender, RoutedEventArgs e) 
    { 
     cs1.TestProperty = "Test button"; 
    } 
} 

Ve olmadan:

<Window.DataContext> 
    <local:Class1/> 
</Window.DataContext> 
İlgili konular