1

ユーザーが [OK] ボタンをクリックすると、DataGrid の DataTemplate の Textbox が明示的に更新されるようにします。次の XAML コードがあります。

<sdk:DataGrid ...>
  <sdk:DataGridTemplateColumn Header="Series Name" Width="200" IsReadOnly="False">
     <sdk:DataGridTemplateColumn.CellTemplate>
        <DataTemplate x:Name="labelData">
           <TextBox Text="{Binding Label, Mode=TwoWay, UpdateSourceTrigger=Explicit}" x:Name="colorPicker"/>
        </DataTemplate>
     </sdk:DataGridTemplateColumn.CellTemplate>
   </sdk:DataGridTemplateColumn>
</sdk::DataGrid>

UpdateSourceTrigger を Explicit に設定しました。TextBox 項目にアクセスして UpdateSource() を呼び出すにはどうすればよいですか?

4

1 に答える 1

2

Linq-to-VisualTree を使用できます。これにより、ビジュアル ツリーにクエリを実行して、特定の基準に一致する要素を見つけることができます。,という名前を付けるDataGridx:Name="myGrid"、次のように動作するはずです。

var textBoxes = myGrid.Descendants<TextBox>().Cast<TextBox>();
foreach(var textbox in textBoxes)
{
    BindingExpression be = textbox.GetBindingExpression(TextBox.TextProperty);
    be.UpdateSource();
}

ただし、この機能を ViewModel に移動する方が簡単な場合があります。

于 2011-05-19T07:28:02.673 に答える