0

2つのテキストボックスtxt1と1つtxt2の文字列依存関係プロパティがありますsprop

public static readonly DependencyProperty spropProperty = DependencyProperty.Register("sprop", typeof (string), typeof (MainWindow), new UIPropertyMetadata(string.Empty));

public string sprop
{
    get { return (string) this.GetValue(spropProperty); }
    set { this.SetValue(spropProperty, value); }
}

txt1ここで、このようにXAMLでデータバインディングを設定すると、次のようになります。

Text="{Binding sprop, ElementName=window, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}

txt1spropテキストボックスのテキストが変更されるたびに、瞬時に更新されます。

しかし、txt2このようにC#でデータバインディングを設定すると、次のようになります。

DataContext = this;
txt2.SetBinding(TextBox.TextProperty, "sprop");

その後、フォーカスを失ったときにのみtxt2更新されます。sprop

C#コードを使用してテキストが変更spropされたらすぐに更新するにはどうすればよいですか?txt2


私が試したこと:

DataContext = this;
var myBinding = new Binding("sprop");
myBinding.Source = this;
myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
txt2.SetBinding(TextBlock.TextProperty, myBinding);
4

2 に答える 2

2

プロパティが変更されたときに更新されるようにするには、txt2でUpdateSourceTriggerも設定する必要があります。これは、コードで設定することもできます。

Binding myBinding = new Binding("MyDataProperty");
myBinding.Source = myDataObject;
myBinding.Mode = TwoWay;
myBinding.UpdateSourceTrigger = PropertyChanged;
myText.SetBinding(TextBlock.TextProperty, myBinding);
于 2012-09-17T20:05:48.297 に答える
1

txt2をMode=TwoWayに設定しましたか?

于 2012-09-17T21:16:45.690 に答える