gpt4 book ai didi

c# - 动态添加标签到 DevExpress DXTabControl WPF, MVVM

转载 作者:太空宇宙 更新时间:2023-11-03 21:31:02 31 4
gpt4 key购买 nike

我的菜单项很少,单击每个菜单项时,我需要将相应的 ViewModel 作为新选项卡加载。为此,我采取了以下方法:

 <dx:DXTabControl OverridesDefaultStyle="True" Margin="2" BorderThickness="0" Padding="0" dxlc:DockLayoutControl.Dock="Client"
Grid.Row="1" ItemsSource="{Binding Workspaces}">
<dx:DXTabControl.View>
<dx:TabControlScrollView ShowHeaderMenu="True" ShowHiddenTabItemsInHeaderMenu="False" HeaderLocation="Top" HeaderOrientation="Horizontal" AllowAnimation="True" AllowHideTabItems="True" AutoHideScrollButtons="True"
ScrollViewer.PanningMode="HorizontalOnly" ScrollButtonsShowMode="WhenNeeded"/>
</dx:DXTabControl.View>
<dx:DXTabControl.ItemTemplate>
<DataTemplate>
<ContentControl Content="{Binding Content}"/>
</DataTemplate>
</dx:DXTabControl.ItemTemplate>
</dx:DXTabControl>

在 ViewModel (C#) 中:

 public ObservableCollection<DXTabItem> Workspaces
{
get { return workspaces; }
set { this.Set<ObservableCollection<DXTabItem>>("Workspaces", ref this.workspaces, value); }
}

并加载 ViewModel:

Workspaces = new ObservableCollection<DXTabItem>() { new DXTabItem() { Header = header,
Content = contentDetails, IsSelected= true, AllowHide = (((WorkspaceViewModel)contentDetails).AllowTabHiding) ? DefaultBoolean.True: DefaultBoolean.False } };

这种方法效果很好,并为我提供了所需的行为。但我确实喜欢从我的 ViewModel 中删除 DXTabItem,因为这使 ViewModel 知道 View 。请告诉我解决此问题的最佳方法。

谢谢!席德

最佳答案

当以 MVVM 方式绑定(bind) DXTabControl 时,您不应在 ViewModel 的代码中使用 DXTabItems。只需将您的数据集合绑定(bind)到 DXTabControl.ItemsSource 属性,如 Binding to Data 中指定的那样帮助文章。
要指定选项卡项和标题的可视化表示,请分别使用 DXTabControl.ItemTemplateDXTabControl.ItemHeaderTemplate 模板。

请查看 How to bind DXTabControl to data有关详细信息的示例。

关于c# - 动态添加标签到 DevExpress DXTabControl WPF, MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24217073/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com