2017-09-09 1 views
0

バインディングを使用してテキストボックスからテキストプロパティを入力したいと思います。 (私の最初のバインドで試してみてください)。 XAMLでデータバインディングのテキストボックスのプロパティからの読み取り

public string TestProperty { get; set; } 

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    TestProperty = 'Test'; 
} 

<TextBox x:Name="TextBox_Test" HorizontalAlignment="Left" Height="23" Margin="49,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="288" Text="{Binding ElementName=TextBox_Test, Path=TestProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 

はプロパティが満たされたときに、フォームのロード

は、私はこれを持っています。テキストボックスは空のままです。どのようにしてテキストボックスを埋めることができますか?

+0

Dependency Properties

このhttps://stackoverflow.com/questions/14965796/wpf-databinding-not-updating – tabby

答えて

0

これが機能するには、いくつか修正する必要があります。

まずは、バインディング式が正しくないと思います。 ElementNameを使用して、バインディングソースがTextBoxであることを指定しました。それは正しくありません。あなたの財源は実際にはWindowである必要があります。だから、あなたのWindowに名前をつけ、ElementNameWindowという名前に変更してください。たとえば...

<TextBox x:Name="TextBox_Test" HorizontalAlignment="Left" Height="23" Margin="49,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="288" 
     Text="{Binding ElementName=Window_Test, Path=TestProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 

第二に、あなたのWindowニーズがターゲットに反映されるように、ソース上の変更のためINotifyPropertyChangedを実装します。

public partial class MainWindow : Window, INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 

    private string _testProperty; 

    public string TestProperty 
    { 
     get { return _testProperty; } 
     set 
     { 
      _testProperty = value; 
      PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("TestProperty")); 
     } 
    } 

    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     TestProperty = "Test"; 
    } 

    public MainWindow() 
    { 
     InitializeComponent(); 
    } 
} 

インターフェイスを実装するようにクラスを変更しましたが、プロパティセッターでイベントを発生させています。

これらの変更により、バインディングが機能します。私はこのタイプのバインディングは少し珍しいことに注意してください。このような場合、WindowDependencyPropertyを使用するのが一般的です。また、UI以外のクラス(ビューモデルなど)にバインドすることもできます。バインディングについて学ぶときに、両方を調べることができます。

MVVM Pattern

+0

感謝を参照してください、それが動作します。 MVVMモデルからの簡単なチュートリアルはありますか? – Hansvb

関連する問題