我希望 DataGrid 的数据模板中的文本框在用户单击"确定"按钮时显式更新。 我有以下 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。 如何访问文本框项以在其上调用 UpdateSource()?
您可以使用
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 中更简单。