Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengikat TabControl ke Koleksi ViewModels menggunakan MVVM Data Binding?

Bagaimana untuk Mengikat TabControl ke Koleksi ViewModels menggunakan MVVM Data Binding?

DDD
Lepaskan: 2025-01-14 08:50:42
asal
240 orang telah melayarinya

How to Bind a TabControl to a Collection of ViewModels using MVVM Data Binding?

Pengikatan data MVVM: Gunakan koleksi ViewModel untuk mengikat TabControl

Dalam seni bina MVVM (Model-View-ViewModel), ViewModel tidak seharusnya mencipta elemen UI secara langsung. Sebaliknya, ia harus mendedahkan model data dan menyediakan pengikatan untuk pandangan. Untuk mengikat TabControl ke koleksi ViewModel, pendekatan berbeza diperlukan.

Buat mockup halaman tab

Laksanakan kelas model yang mewakili setiap halaman tab, termasuk sifat untuk tajuk dan kandungan. Contohnya:

<code class="language-csharp">public sealed class TabItem
{
    public string Header { get; set; }
    public string Content { get; set; }
}</code>
Salin selepas log masuk

ViewModel yang mengandungi ObservableCollection

Buat sifat ViewModel untuk ObservableCollection objek TabItem. Dalam pembina, isikan koleksi ini dengan tab awal:

<code class="language-csharp">public sealed class ViewModel
{
    public ObservableCollection<TabItem> Tabs { get; set; }
    public ViewModel()
    {
        Tabs = new ObservableCollection<TabItem>();
        Tabs.Add(new TabItem { Header = "One", Content = "One's content" });
        Tabs.Add(new TabItem { Header = "Two", Content = "Two's content" });
    }
}</code>
Salin selepas log masuk

Mengikat dalam XAML

Dalam tetingkap XAML, tetapkan ItemsSource TabControl kepada sifat Tab dalam ViewModel:

<code class="language-xml"><Window ... x:Class="WpfApplication12.MainWindow">
    <Window.DataContext>
        <viewmodel:ViewModel xmlns:viewmodel="clr-namespace:WpfApplication12"/>
    </Window.DataContext>
    <TabControl ... ItemsSource="{Binding Tabs}"/>
</Window></code>
Salin selepas log masuk

Templat data untuk kandungan tab

Untuk memaparkan kandungan berbeza dalam setiap tab, gunakan templat data sifat ContentTemplate TabControl:

<code class="language-xml"><TabControl ...>
    <TabControl.ItemTemplate>
        <DataTemplate>
            ...
        </DataTemplate>
    </TabControl.ItemTemplate>
    <TabControl.ContentTemplate>
        <DataTemplate>
            <myusercontrol:MyUserControl xmlns:myusercontrol="clr-namespace:WpfApplication12"/>
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl></code>
Salin selepas log masuk

Dengan pendekatan ini anda boleh mencipta TabControl secara dinamik dan mengikatnya pada koleksi ViewModel sambil mengekalkan prinsip MVVM.

Atas ialah kandungan terperinci Bagaimana untuk Mengikat TabControl ke Koleksi ViewModels menggunakan MVVM Data Binding?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan