以下のxamlをMainWindow.xamlに含める:
<Window x:Class="TestDependency.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>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Label Name="someLabel" Grid.Row="0" Content="{Binding Path=LabelText}"></Label>
<Button Grid.Row="2" Click="Button_Click">Change</Button>
</Grid>
</Window>
そして、MainWindow.xaml.csの背後にある次のコード:
public static readonly DependencyProperty LabelTextProperty = DependencyProperty.Register("LabelText", typeof(String), typeof(MainWindow));
public int counter = 0;
public String LabelText
{
get
{
return (String)GetValue(LabelTextProperty);
}
set
{
SetValue(LabelTextProperty, value);
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
LabelText = "Counter " + counter++;
}
DataContext
デフォルトはコードビハインドだと思っていたでしょう。しかし、私はを指定することを余儀なくされていますDataContext
。デフォルトはどれですか?DataContext
Null
?私は、背後にあるコードが(同じクラスのように)あっただろうと思っていたでしょう。
そして、このサンプルのように、ラベルのコンテンツを変更するためにコードビハインドを使用しています。直接使用できますか?
someLabel.Content = "Counter " + counter++;
DataContext
コードビハインドであるため、が別のクラスにある場合に発生するUI更新の問題は発生しないはずです。