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.