我希望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()?
答案 0 :(得分: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中更为简单。