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了。

相关内容

热门资讯

黑科技ai!wepoke黑科技... 黑科技ai!wepoke黑科技功能,德扑之星软件透明软件多少钱,2025新版教程(有挂规律)-哔哩哔...
黑科技肯定!微扑克辅助多少钱(... 1、黑科技肯定!微扑克辅助多少钱(辅助挂)素来真的是有挂(有挂模拟器)-哔哩哔哩2、进入游戏-大厅左...
黑科技好友!aa poker有... 黑科技好友!aa poker有外挂吗(黑科技ai)太坑了是有挂(可靠技巧黑科技工具)-哔哩哔哩1、a...
黑科技ai!aapoker俱乐... 您好,aapoker俱乐部后台可以操作吗这款游戏可以开挂的,确实是有挂的,需要了解加微【136704...
黑科技教程!德州ai辅助工具购... 此外,数据分析德州(德州ai辅助工具购买)辅助神器app还具备辅助透视行为开挂功能,通过对客户德州a...
黑科技好牌!wpk机器人代打(... 黑科技好牌!wpk机器人代打(透视)太坑了有挂(解说技巧黑科技辅助)-哔哩哔哩;1、下载好wpk机器...
黑科技透明挂!wepoke到底... 自定义wpk透视外挂购买渠道系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器...
黑科技科技!红龙poker正规... 1、黑科技科技!红龙poker正规吗(透视)往昔是真的有挂(有挂最新款)-哔哩哔哩;详细教程。2、红...
黑科技辅助挂!wpk德州辅助(... 黑科技辅助挂!wpk德州辅助(黑科技ai)太坑了存在有挂(透明挂教程黑科技工具)-哔哩哔哩;1、每一...
黑科技了解!wepok系统规律... 1、黑科技了解!wepok系统规律解析(透视)总是有挂(有挂代打)-哔哩哔哩2、进入游戏-大厅左侧-...