【问题标题】:How to add popupcontainer edit in the gridcontrol devexpress如何在gridcontrol devexpress中添加popupcontainer编辑
【发布时间】:2015-03-28 22:00:14
【问题描述】:

我正在使用 MVVM 设计模式在 WPF 中开发应用程序。因此,在我的一个用户控件中,我有一个 gridcontrol (devexpress)。此网格控件绑定到我的 viewmodel 类中的数据表。例如,我的数据表的列是开始日期、结束日期、值、cmets。现在在 cmets 列中,我希望在我的 gridcontrol 中出现一个弹出容器。有可能吗?

【问题讨论】:

    标签: c# wpf mvvm devexpress


    【解决方案1】:

    首先将以下内容添加到您的 xaml 命名空间 xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"

    您可以使用GridColumn.EditSettings 在编辑器中编辑或查看单元格,如下所示在您的<dxg:GridControl>

    <dxg:GridControl.Columns >
          <dxg:GridColumn FieldName="begindate">
                   <dxg:GridColumn.EditSettings>
                        <dxe:DateEditSettings/>
                   </dxg:GridColumn.EditSettings>
         </dxg:GridColumn>
          <dxg:GridColumn FieldName="enddate">
                   <dxg:GridColumn.EditSettings>
                        <dxe:DateEditSettings/>
                   </dxg:GridColumn.EditSettings>
         </dxg:GridColumn>
         <dxg:GridColumn FieldName="value"/>
         <dxg:GridColumn FieldName="comment">
                   <dxg:GridColumn.EditSettings>
                        <dxe:MemoEditSettings/>
                   </dxg:GridColumn.EditSettings>
         </dxg:GridColumn>
    </dxg:GridControl.Columns>
    

    在旁注中使用ObservableCollection&lt;T&gt;

    U:要为列自定义控件,请使用DataTemplate

    <dxg:GridColumn FieldName="fieldname">
       <dxg:GridColumn.CellTemplate>
            <DataTemplate>
                <youcontrolnamespace:someCustomControl x:Name="PART_Editor"/>
            </DataTemplate>
        </dxg:GridColumn.CellTemplate>
    </dxg:GridColumn>
    

    U:对于您的最后一条评论,请使用 dxe:PopupBaseEditSettingsControlTemplate

    <dxg:GridColumn FieldName="fieldname">
          <dxg:GridColumn.EditSettings>
                  <dxe:PopupBaseEditSettings>
                       <dxe:PopupBaseEditSettings.PopupContentTemplate>
                            <ControlTemplate>
                                      <!--Your Controls to popup here-->
                            </ControlTemplate>
                       </dxe:PopupBaseEditSettings.PopupContentTemplate>
                  </dxe:PopupBaseEditSettings>
             </dxg:GridColumn.EditSettings>
    </dxg:GridColumn>
    

    【讨论】:

    • 嘿,谢谢,我得到了编辑器,但是否也可以在该编辑器中添加自定义控件?
    • @user3821877 当然,您需要为此使用 DataTemplate
    • 好吧,数据模板很有意义。我还没有实现自定义控件,目前正在将其直接添加到 xaml。所以基本上我想将所有控件包装在一个弹出容器中,而 wpf 似乎没有。我的数据模板目前由一个两行两列的网格组成。 row =0 col = 0 中的标签, row=0 中的文本框, col = 1 等等。但这会导致整个网格显示在 gridcontrol 单元格中。是否有某种包含整个网格的弹出控件?
    • 此解决方案有效,但是当我尝试触发控件模板中声明的事件时,找不到该方法。
    • 您不能直接在控件模板中挂钩事件,最简单的方法是命名您想要与 PART_something 挂钩的控件并在您的视图中处理 ContentRendered 事件并使用它来挂钩ContentTemplate 中控件的事件处理程序,找到调用 Template.FindName("PART_something", Controltype) 的控件并使用 += 将事件处理程序挂钩到它
    猜你喜欢
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多