AvalonDock多个LayoutDocumentPane,每个Pane包含不同的ObservableCollection,其中包含动态创建的UserControls。
创始人
2024-11-12 18:00:41
0

下面是一个使用AvalonDock的示例代码,其中包含多个LayoutDocumentPane,每个Pane都包含一个不同的ObservableCollection,这些集合中包含动态创建的UserControls。

首先,我们需要在XAML文件中放置一个AvalonDock控件,并创建多个LayoutDocumentPane。在每个LayoutDocumentPane中,我们使用ItemsControl控件来显示ObservableCollection中的UserControls。以下是XAML代码示例:


    
        
            
                
                    
                        
                            
                                
                            
                        
                    
                
                
                    
                        
                            
                                
                            
                        
                    
                
            
        
    

在代码中,我们需要创建两个ObservableCollection,分别用于Pane1和Pane2。我们还需要创建一个实现了INotifyPropertyChanged接口的ViewModel类,并将这两个集合作为其属性。以下是ViewModel类的示例代码:

public class ViewModel : INotifyPropertyChanged
{
    private ObservableCollection _pane1Collection;
    public ObservableCollection Pane1Collection
    {
        get { return _pane1Collection; }
        set
        {
            _pane1Collection = value;
            OnPropertyChanged("Pane1Collection");
        }
    }

    private ObservableCollection _pane2Collection;
    public ObservableCollection Pane2Collection
    {
        get { return _pane2Collection; }
        set
        {
            _pane2Collection = value;
            OnPropertyChanged("Pane2Collection");
        }
    }

    public ViewModel()
    {
        // 初始化集合
        Pane1Collection = new ObservableCollection();
        Pane2Collection = new ObservableCollection();

        // 动态创建UserControls并添加到集合中
        UserControl userControl1 = new UserControl1();
        Pane1Collection.Add(userControl1);

        UserControl userControl2 = new UserControl2();
        Pane1Collection.Add(userControl2);

        UserControl userControl3 = new UserControl3();
        Pane2Collection.Add(userControl3);
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

最后,在MainWindow的构造函数中,将ViewModel设置为DataContext:

public MainWindow()
{
    InitializeComponent();

    DataContext = new ViewModel();
}

这样,你就可以实现多个LayoutDocumentPane,每个Pane包含不同的ObservableCollection,其中包含动态创建的UserControls了。

相关内容

热门资讯

此事引发网友热议!新玄龙辅助!... 此事引发网友热议!新玄龙辅助!原来真的是有开挂辅助软件(有挂教学)-哔哩哔哩1、新玄龙辅助免费辅助多...
今日!老友广东插件软件!都是确... 今日!老友广东插件软件!都是确实有开挂辅助挂(有挂详情)-哔哩哔哩1、游戏颠覆性的策略玩法,独创攻略...
截至发稿!潘潘讲故事外g挂!好... 截至发稿!潘潘讲故事外g挂!好像是真的有开挂辅助教程(有挂透视)-哔哩哔哩1、完成潘潘讲故事外g挂有...
备受关注的!新老夫子较二八年!... 备受关注的!新老夫子较二八年!竟然真的是有开挂辅助挂(有挂技术)-哔哩哔哩小薇(辅助器软件下载)致您...
截至发稿!广东雀神祈福真的有用... 截至发稿!广东雀神祈福真的有用吗!本来是有开挂辅助软件(揭秘有挂)-哔哩哔哩1、很好的工具软件,可以...
出乎意料的是!微乐透视辅助工具... 出乎意料的是!微乐透视辅助工具!确实存在有开挂辅助app(确实有挂)-哔哩哔哩1)微乐透视辅助工具辅...
随着!情怀七喜游戏辅助!确实是... 随着!情怀七喜游戏辅助!确实是有开挂辅助攻略(有挂技术)-哔哩哔哩1、不需要AI权限,帮助你快速的进...
更值得关注的是!闲逸平台辅助功... 更值得关注的是!闲逸平台辅助功能入口在哪里!竟然是有开挂辅助插件(有挂详细)-哔哩哔哩1、闲逸平台辅...
连日来!心悦透视辅助功能插件下... 连日来!心悦透视辅助功能插件下载!都是是有开挂辅助教程(有挂工具)-哔哩哔哩1、全新机制【心悦透视辅...
相较于以往!兴动互娱软件辅助下... 相较于以往!兴动互娱软件辅助下载!果然确实有开挂辅助app(有挂方式)-哔哩哔哩1、不需要AI权限,...