バインドしておいてコードから変更を通知する。
どうもこんにちは続いてバインドしておいてコードで変化があったら通知するやりかたです。
ボタンを押すと、テキストを変化させ、その変化がUI側にPropertyChangedとして通知されテキストが変化します。
public class Moo : INotifyPropertyChanged { private string txt; public string Txt { set { this.txt = value; this.PropertyChanged(this, new PropertyChangedEventArgs("Txt")); } get { return txt; } } public Moo() { this.txt = "moo"; } public event PropertyChangedEventHandler PropertyChanged; }
このようにINotifyPropertyChangedとしてPropertyChangedを実装しといて、値がセットされたときに変わったよと呼び出すわけです。
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" DataContext="{StaticResource moo}" Text="{Binding Txt}" /> <Button Content="Button" HorizontalAlignment="Left" Margin="930,378,0,0" VerticalAlignment="Top" Click="Button_Click" />
ここではBindしていることでその変わったよイベントを監視しています。
public sealed partial class MainPage : Page { public MainPage() { this.InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { moo.Txt = "pop"; } }
ボタンをおすことで、テキストがセットされるコードを置きました。
Bindingは値の変化したよ通知を監視して自動でUIを変更してくれるのがポイントです。この変わったよ通知自体はどこでだすかはコード側で指定する必要があったというわけです。ここでは値がsetされるところで呼んでいます。