Silverlight DataGrid's DataTemplate and Explicit UpdateS

本文关键字:DataTemplate and Explicit UpdateS DataGrid Silverlight | 更新日期: 2023-09-27 17:56:59

我希望 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()?

Silverlight DataGrid's DataTemplate and Explicit UpdateS

您可以使用

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 中更简单。