إضافة/إزالة علامات التبويب مع التحكم في المستخدم بشكل حيوي في WPF - Binding Tab Name

أود إنشاء التطبيق مع TabControl.

وأود أن أضع UserControls على علامات التبويب ، لكنني لن إنشاء هذا في ملف * .cs ، ولكن باستخدام الربط.

لدي تطبيق حيث يمكنني إضافة علامة تبويب مع usercontrol ، ولكن لا أعرف كيف ربط سلسلة مع اسم علامة التبويب.

رمز بلدي:

MainWindow.xaml.cs </م>

using System.Windows;

namespace WpfApp3
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

MainWindow.xaml </م>



    
        
    

    
        
            
            
        

        
            
        

        
            
                
                     <!--binding? -->
                
            
        
        <button Grid.Row="1" Content="Dodaj zakładkę" Command="{Binding AddButtonCommand}"/>

    

MainWindowViewModel.cs </م>

using Prism.Commands;
using Prism.Mvvm;
using System.Collections.ObjectModel;
using System.Windows.Controls;
using System.Windows.Input;

namespace WpfApp3
{
    class MainWindowViewModel : BindableBase
    {
        public ObservableCollection UserControls { get; set; }
        public ICommand AddButtonCommand { get; set; }

        public MainWindowViewModel()
        {
            AddButtonCommand = new DelegateCommand(ClickButton);
            UserControls = new ObservableCollection();           
        }

        private void ClickButton()
        {
            UserControls.Add(new UCTest());
            RaisePropertyChanged("UserControls");
        }
    }
}

حاولت إضافة منشئ UserControl مع المعلمة بالاسم ، ولكن لا أعرف كيف الانضمام إليها مع ملزمة.

الشيء الثاني الخاص بي هو إنشاء فئة مع UserControl و String (مع اسم علامة التبويب) ، ولكن لا يمكن ربط الحقل مع UserControl إلى Widdow.

شكر، مع تحياتي.

0
@ mm8 أنه من الممكن استخدام UCTest Tag لهذا؟
وأضاف المؤلف Tomasz Filipek, مصدر
ما هي خاصية UCTest التي تريد ربطها؟
وأضاف المؤلف mm8, مصدر
نسخة محتملة من wpf Databinding TabItem Headers
وأضاف المؤلف LittleBit, مصدر
يمكن الإجابة عن هذا السؤال هنا stackoverflow.com/a/5651542/9669202
وأضاف المؤلف LittleBit, مصدر
يمكنك إضافة خاصية سلسلة داخل UCTest وربط ذلك إلى مربع النص.
وأضاف المؤلف Shivani Katukota, مصدر

1 إجابة

يجب عدم إضافة UserControls أو أي عناصر واجهة مستخدم أخرى إلى ObservableCollection في نموذج العرض. بدلاً من ذلك ، يجب تحديد نوع الطراز الخاص بك وإضافة مثيلات من هذا إلى مجموعة المصدر.

يمكنك بعد ذلك ربط أي خاصية من هذه الفئة:

class Model
{
    public string Header { get; set; }
}

class MainViewModel : BindableBase
{
    public ObservableCollection UserControls { get; set; }
    public ICommand AddButtonCommand { get; set; }

    public Window13ViewModel()
    {
        AddButtonCommand = new DelegateCommand(ClickButton);
        UserControls = new ObservableCollection();
    }

    private void ClickButton()
    {
        UserControls.Add(new Model() { Header = "some name..." });
    }
}

<�القوي> XAML: </قوي>


    
        
            
        
    
    
        
            
        
    

0
وأضاف