首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在编辑后用自定义用户控件将WPF数据格列标记为脏列

如何在编辑后用自定义用户控件将WPF数据格列标记为脏列
EN

Stack Overflow用户
提问于 2022-09-13 07:09:24
回答 1查看 41关注 0票数 0

我在WPF中有一个数据集,我在其中一个列中使用一个自定义的多选择用户控件,如下所示:

代码语言:javascript
运行
复制
<DataGridTemplateColumn 
    x:Name="APIColumnMulti"
    Width="auto"
    Header="Wirkstoff"
    >
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <usercontrols:MultiSelectCell
                x:Name="multiSelect1"
                Title="Wirkstoffe"
                ChosenItems="{Binding ActiveIngredients, UpdateSourceTrigger=PropertyChanged}"
                IsTemplateRow="{Binding IsTemplate, UpdateSourceTrigger=PropertyChanged}"
                ItemsSource="{Binding AllActiveIngredientsList, RelativeSource={RelativeSource AncestorType=UserControl}, UpdateSourceTrigger=PropertyChanged}"
                TemplateName="TemplateProduct.ActiveIngredientList"
                TemplateProduct="{Binding Source.Template, UpdateSourceTrigger=PropertyChanged}" />

        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

几乎一切都很好。但是,当我结束编辑我的multiselect时,数据行本身并没有被通知更改。因此,当我离开行时,如果没有编辑--例如,标准文本字段--内容就不会按应有的方式保存。

如何从CellTemplate的角度将行标记为已编辑/脏?

..。还是没有回答,所以也许我说得不够清楚。

我的MultiSelect有一个按钮,一个大的+,如果你点击它,一个对话框打开,你可以选择项目。然后单击"accept",对话框将关闭,所选的项将显示在单元格模板中(在usercontrol中)。但是该数据集没有被通知该单元格已被更改。因此,当我离开行时,不会触发RowEditEnding事件。

到目前为止,我发现的是:

您需要/应该在

  • 中实现UserControl中的IEditableObject,如果您想将它用作数据集中的输入。但是,没有任何事件会一直持续到数据集,因此这似乎不是解决方案的一部分。当我单击带有项和加号按钮的单元格并错过该按钮时,
  • 会意识到编辑已经开始。但是,当我直接单击按钮时,datagrid并不知道这一点。我试图从我的RoutedEvent委托中传播ClickOnPlusButton,但没有成功--显然我不知道如何正确地做它。

我很迷茫。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-14 14:57:19

好的,我终于找到了解决办法。

在我的UserControl中,为了获得DataGrid实例,我不得不在可视化树上走得很远。然后一个dataGrid.BeginEdit()和一个dataGrid.CommitEdit()发挥了神奇的作用,并通知DataGrid当前编辑的行已经更改。这样,DataGrid在离开行或按Enter时调用ViewModel (需要IEditableObject接口)上的EndEdit()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73698826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档