これにはバインディングを使用します(一方向と双方向のバインディングがあります。この場合、おそらく双方向のバインディングを探しています)。
こちらもご覧ください:msdnチュートリアルとxamlバインディングチートシートを保持できます:)。
いくつかの基本的な例。私が行ったのはデータコンテキストを設定することでした。この場合はMainWindowクラス(それ自体)に設定しましたが、ビューモデルに簡単に設定できます。MyFoo.MyString
次に、の値をテキストボックスのtextプロパティにバインドしました。
ボタンと他のテキストフィールドは、双方向バインディングが機能することを示すためのものです(この場合はデフォルトです)。
XAML:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid>
<TextBox Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" Text="{Binding MyFoo.MyString}" />
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="12,41,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="12,70,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" IsEnabled="False" Text="Init" />
</Grid>
</Window>
Foo
次の定義でクラスを作成します。
public class Foo
{
public string MyString { get; set; }
}
そして、背後にあるMainWindowコードには、次のものがあります。
public partial class MainWindow : Window
{
public Foo MyFoo { get; set; }
public MainWindow()
{
MyFoo = new Foo() { MyString = "Hello" };
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
textBox2.Text = MyFoo.MyString;
}
}
これは簡単で汚い例です。残りの部分を理解できると思います。さもないと、周りを見回すだけで、WPFのデータバインディングに関する多くの情報があります。