DEVEXPRESS MVVM:管理DocumentGroup中的选项卡

时间:2014-09-15 14:43:46

标签: wpf xaml mvvm user-controls devexpress

我正在使用MVVM模式,在VS2013中使用C#。

我的项目中有一个DocumentGroup,项目目录中有一组用户控件(xaml文件)。

<dxd:DocumentGroup Name="documentcontainer" ItemHeight="3*" SelectedTabIndex="0" ItemsSource="{Binding tabsCollection}" AllowMove="False" AllowFloat="False" AllowDrag="False">

</dxd:DocumentGroup>

我的viewModel是tabsCollection的定义:

    private ObservableCollection<DocumentPanel> p_tabsCollection;
    public ObservableCollection<DocumentPanel> tabsCollection
    {
        get { return p_tabsCollection; }
        set
        {
            p_tabsCollection = value;
            base.RaisePropertyChangedEvent("tabsCollection");
        }

    }

    private void Initialize() {
        DocumentPanel t = new DocumentPanel( );
        t.Content = Application.LoadComponent(new Uri("View/UC/ucImpianti.xaml", UriKind.Relative)); ;
        p_tabsCollection.Add(t);
    }
  1. 是tabsCollection的类型正确吗?
  2. 如何在documentPanel中插入我的用户控件(xaml文件)? (如果类型正确)
  3. 我想创建一些用用户控件填充的选项卡。从我的菜单中,不同的声音必须在选项卡&#34;中打开不同的&#34; usercontrol,因此在开始时没有选项卡:它们是在运行时创建的,当用户点击菜单时。

    更新的代码:现在看来是正确的,但是在启动时会产生错误/异常..


    UPDATE - &GT;解

    这样就可以了:

    <dxd:DocumentGroup Name="documentcontainer" ItemHeight="3*" ItemsSource="{Binding tabsCollection}" AllowDrag="False" AllowMove="False" AllowSplitters="False" AllowSizing="False" AllowFloat="False" ClosingBehavior="ImmediatelyRemove" SelectedTabIndex="{Binding SelectedDocumentIndex}" >
        <dxd:DocumentGroup.ItemStyle>
            <Style TargetType="dxd:DocumentPanel">
                <Setter Property="CloseCommand" Value="{Binding CloseCommand}" />
            </Style>
        </dxd:DocumentGroup.ItemStyle>
    </dxd:DocumentGroup>
    

    当我问这个问题时,我发布的CloseCommand是一样的。解决方案的关键在于xaml。

2 个答案:

答案 0 :(得分:1)

您可以将数据集绑定到DockLayoutManager.ItemsSource属性,如MVVM Support - Building Dock UI帮助文章中所示。要将ItemsSource集合的元素可视化为布局项,请通过ItemTemplateItemTemplateSelector属性提供模板。

答案 1 :(得分:0)

请阅读以下文章,该文章描述了如何使用DevExpress MVVM Framework和TabbedDocumentUIService实现,该实现提供了创建和显示文档作为选项卡的方法:DevExpress MVVM Framework. Interaction of ViewModels. IDocumentManagerService.

以下是主要想法:

<Button Content="Show Document" 
    Command="{Binding ShowDocumentCommand}" CommandParameter="Document1" />
...
<dxdo:DockLayoutManager>
    <dxdo:LayoutGroup Orientation="Vertical">
        <dxdo:DocumentGroup Caption="Documents">
            <dxmvvm:Interaction.Behaviors>
                <dxdo:TabbedDocumentUIService />
            </dxmvvm:Interaction.Behaviors>
        </dxdo:DocumentGroup>
    </dxdo:LayoutGroup>
</dxdo:DockLayoutManager>


[POCOViewModel]
public class MainViewModel : ViewModelBase {
    [ServiceProperty]
    protected virtual IDocumentManagerService DocumentManager { 
        get { return null; } 
    }
    [Command]
    public void ShowDocument(string document) {
        IDocument doc = DocumentManager.CreateDocument(document, null, this);
        doc.Title = document;
        doc.Show();
    }
}

完整的代码示例在http://www.devexpress.com/example=E4861的DevExpress代码示例数据库中提供。

有关构建功能齐全且组织良好的MVVM应用程序的相关分步教程系列,只需点击几下:Scaffolding Wizards - Getting Started