DataTemplate и явное UpdateSourceTrigger Silverlight DataGrid

Я хочу, чтобы текстовое поле в DataTemplate DataGrid явно обновлялось, когда пользователь нажимает кнопку OK. У меня есть следующий код 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() для них?

1 ответ

Вы можете использовать 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.

Другие вопросы по тегам