次の単純なコードについて考えてみます。
XAML:
<Grid Height="60" Name="grid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="162*" />
<ColumnDefinition x:Name="coltest" Width="316*" />
<ColumnDefinition Width="239*" />
</Grid.ColumnDefinitions>
</Grid>
<Label MouseDoubleClick="TextBox_MouseDoubleClick"
Content="{Binding ElementName=coltest, Path=ActualWidth}" Grid.Row="1"/>
MouseDoubleClick
イベント:
private void TextBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
grid.RowDefinitions.Add(new RowDefinition());
for (int i = 0; i < grid.ColumnDefinitions.Count; i++)
{
Random r = new Random();
Label l = new Label { Content = r.Next(10, 1000000000).ToString() };
grid.Children.Add(l);
Grid.SetRow(l, grid.RowDefinitions.Count - 1);
Grid.SetColumn(l, i);
}
}
私のラベルにはActualWidth
、バインディングを介して2番目の列のプロパティが含まれています。Visual Studioで、値316を含むラベルが表示されるので、バインドは機能します。
ラベルをダブルクリックすると、そのイベントがトリガーされ、グリッドにランダムな長さの行が追加されます。
ラベルに新しい値が表示されることを期待していますが、(実行時に計算された)0は変更されません!
ここで何が欠けていますか?