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

相关内容

热门资讯

黑科技辅助!wepoke透明黑... 《黑科技辅助!wepoke透明黑科技,(AAPoKerai机器人)从来真的有挂,解密教程(有挂讲解)...
推荐一款(中至常熟麻将技巧)本... 您好,中至常熟麻将技巧这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在...
盘点几款(天天贵阳手机麻将通用... 盘点几款(天天贵阳手机麻将通用胡牌神器)往昔真的有挂(辅助挂)2025版教程(2026已更新)(哔哩...
一分钟教你(豆豆斗牌辅助器)确... 一分钟教你(豆豆斗牌辅助器)确实是有挂(辅助挂)揭秘教程(2021已更新)(哔哩哔哩);豆豆斗牌辅助...
一分钟快速了解(手机唯思竞技麻... 一分钟快速了解(手机唯思竞技麻将有挂)起初真的是有挂(辅助挂)技巧教程(2022已更新)(哔哩哔哩)...
最新研发(浙江游戏大厅插件)先... 您好,浙江游戏大厅插件这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在...
必知教程(大盘山棋牌有挂)好像... 必知教程(大盘山棋牌有挂)好像存在有挂(辅助挂)详细教程(2025已更新)(哔哩哔哩);大盘山棋牌有...
重磅来袭(山西大唐麻将系统规律... 重磅来袭(山西大唐麻将系统规律)确实是真的有挂(辅助挂)细节揭秘(2021已更新)(哔哩哔哩);超受...
大神推荐(哈哈长沙麻将可以提高... 大神推荐(哈哈长沙麻将可以提高胜率)总是有挂(辅助挂)揭秘教程(2023已更新)(哔哩哔哩);1、选...
发现一款(大齐山东麻将有挂)确... 您好,大齐山东麻将有挂这款游戏可以开挂的,确实是有挂的,需要了解加微【485275054】很多玩家在...