Silverlight DataGrid 的 DataTemplate 和显式 UpdateSourceTrigger

发布于 2024-11-08 01:05:01 字数 654 浏览 0 评论 0原文

我希望 DataGrid 的 DataTemplate 中的文本框在用户单击“确定”按钮时显式更新。我有以下 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() ?

I want a Textbox in a DataGrid's DataTemplate to explicitly update when a user clicks the OK button. I have the following XAML code:

<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>

I set to UpdateSourceTrigger to Explicit. How do I access the TextBox items to call UpdateSource() on them?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

疧_╮線 2024-11-15 01:05:01

您可以使用 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 中更简单。

You could use Linq-to-VisualTree, this allows you to query the visual tree to find elements that match certain criteria. If you name your DataGrid, x:Name="myGrid", the following should work:

var textBoxes = myGrid.Descendants<TextBox>().Cast<TextBox>();
foreach(var textbox in textBoxes)
{
    BindingExpression be = textbox.GetBindingExpression(TextBox.TextProperty);
    be.UpdateSource();
}

However, you might find it simpler to move this functionality into a ViewModel.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文