概要
テキストボックスのTextBox.Textプロパティをバインディングします。
二つのテキストボックスのTextプロパティを同じソースでバインディングすると、片方のテキストボックスの変更内容がもう一つのテキストボックスに反映されるようになります。
ビュー、コード
ビュー XAML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<Window x:Class="validationTest2.Window2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:validationTest2" mc:Ignorable="d" Title="Window2" Height="170" Width="210"> <Grid> <StackPanel> <TextBox x:Name="textBox1" Margin="5" Text="{Binding BindTest, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> <TextBox x:Name="textBox2" Margin="5" Text="{Binding BindTest, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> <TextBox x:Name="textBox3" Margin="5"/> <TextBox x:Name="textBox4" Margin="5"/> </StackPanel> </Grid> </Window> |
コード (Window2.xaml.cs)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
using System.Windows; using System.Windows.Controls; using System.Windows.Data; namespace validationTest2 { /// <summary> /// Window2.xaml の相互作用ロジック /// </summary> public partial class Window2 : Window { public Window2() { InitializeComponent(); TextBindTest textBindTest = new TextBindTest(); // このプログラムでは、DataContextをXAMLではなくてコードビハインドで設定します。 textBox1.DataContext = textBindTest; textBox2.DataContext = textBindTest; //コードビハインドでTextBox.Textプロパティを設定します。 textBox3.DataContext = textBindTest; textBox3.SetBinding(TextBox.TextProperty, new Binding("BindTest")); //コードビハインドでTextBox.TextプロパティのModeとUpdateSourceTriggerも設定可能。 textBox4.DataContext = textBindTest; Binding myBinding = new Binding("BindTest"); myBinding.Mode= BindingMode.TwoWay; myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; textBox4.SetBinding(TextBox.TextProperty, myBinding); } } // テキストボックスバインド用のクラス(ViewModel) public class TextBindTest { public string BindTest{get;set;} } } |
コメント