1

我希望 DataGrid 的 DataTemplate 中的文本框在用户单击“确定”按钮时显式更新。我有以下 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 设置为显式。如何访问 TextBox 项目以对其调用 UpdateSource()?

4

1 回答 1

2

您可以使用Linq-to-VisualTree,这允许您查询可视化树以查找符合特定条件的元素。如果您将DataGrid,命名为x: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 回答