【发布时间】:2019-06-21 12:20:55
【问题描述】:
我正在编写一个基于 MVVM 模式的 WpfCustomControlLibrary。我有一个 View 包含必须处理扩展模型的 TreeView 对象。
型号:
public class TreeBranchesView
{
public ObservableCollection<DiscountGroup> DiscoutGroups { get; set; }
}
public class DiscountGroup : ViewModelBase
{
public int ID { get; set; }
public string GroupName { get; set; }
public decimal DefaultValue { get; set; }
private bool _isCheckedInMenu;
public bool IsCheckedInMenu
{
get { return _isCheckedInMenu; }
set
{
_isCheckedInMenu = value;
OnPropertyChanged("IsCheckedInMenu");
}
}
public ObservableCollection<SubGroup> SubGroups { get; set; }
public ObservableCollection<ArticleGroup> ArticleGroup { get; set; }
}
public class SubGroup : ViewModelBase
{
public int ID { get; set; }
public int SubGroupParent { get; set; }
public string Name { get; set; }
public decimal DefaultValue { get; set; }
public ObservableCollection<ArticleGroup> ArticleGroup { get; set; }
}
public class ArticleGroup
{
public int ArticleID { get; set; }
public int DiscountGroup { get; set; }
public int SubGroup { get; set; }
}
我的主要目标是实现以下情况:
-DiscountGroup
--ArticleGroup
--ArticleGroup
-DiscountGroup
--ArticleGroup
--ArticleGroup
--SubGroup
--SubGroup
--SubGroup
---ArticleGroup
---ArticleGroup
-DiscountGroup
-DiscountGroup
--SubGroup
ArticleGroup 和 SubGroups 可以位于同一级别。实际上我的 xaml 看起来像:
<GroupBox Grid.Column="0" Grid.Row="0" Header="MainTree">
<StackPanel Orientation="Horizontal">
<TreeView x:Name="MainTreeView" Grid.Column="0" Grid.Row="0" ItemTemplate="{StaticResource level1}"
ItemsSource="{Binding TreeBranches}" />
</StackPanel>
</GroupBox>
所有模板都存储在 windows.resources 下
<Window.Resources>
<HierarchicalDataTemplate x:Key="level2" ItemsSource="{Binding ArticleGroup}" >
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="level1" ItemsSource="{Binding SubGroups}" ItemTemplate="{StaticResource level2}" >
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding GroupName}" />
</StackPanel.ContextMenu>
</StackPanel>
</HierarchicalDataTemplate>
</Window.Resources>
我有以下问题 - TreeView 必须在同一级别显示两个不同的集合,而上面的代码 不允许这样做,此时它只处理一个。重要的是,这些集合的类型不同。
【问题讨论】:
-
那么...您的实际问题是什么?您发布了代码(一个不完整的代码示例)。但是该代码有什么作用?这与您希望代码执行的操作有何不同?您具体遇到了什么问题?请改进问题,使其包含一个可靠地重现问题的良好minimal reproducible example。
-
我已经编辑了问题,希望我的问题现在很清楚。