DataTemplate и явное UpdateSourceTrigger Silverlight DataGrid - PullRequest
1 голос
/ 19 мая 2011

Я хочу, чтобы текстовое поле в 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 значение Explicit.Как получить доступ к элементам TextBox для вызова UpdateSource () для них?

1 Ответ

2 голосов
/ 19 мая 2011

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

...