Tôi có một Usercontrol (TabUserControl) có chứa một TabControl. ViewModel của UserControl đó tải ab Bộ sưu tập quan sát được của TabItems. Một trong những mục đó là điều khiển người dùng khác. Khi tôi chỉ cần tải văn bản trong tabcontrol không có vấn đề, nhưng làm thế nào tôi có thể tải điều khiển người dùng khác vào tabitem của TabUserControl. Tôi đang sử dụng MVVM.Tải UserControl trong TabItem
Dưới đây là mã của tôi:
public class TabItem
{
public string Header { get; set; }
public object Content { get; set; } // object to allow all sort of items??
}
ViewModel của TabUserControl
public class TabViewModel
{
public ObservableCollection<TabItem> Tabs {get;set;}
public TabViewModel()
{
Tabs = new ObservableCollection<TabItem>();
//Tabs.Add(new TabItem { Header = "Overview", Content = new OverviewViewModel() }); How to load a usercontrol here if it's in the ItemCollection?
Tabs.Add(new TabItem { Header = "Overview", Content = "Bla bla bla" });
Tabs.Add(new TabItem { Header = "Two", Content = "Two's content" });
}
}
Và sau đó TabControl XAML:
<TabControl x:Name="_tabControl"
ItemsSource="{Binding Tabs}">
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="Header"
Value="{Binding Header}" />
<Setter Property="Content"
Value="{Binding Content}" />
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
Nó hoạt động miễn là tôi không tải viewmodel của usercontrol trong bộ sưu tập tabItems. làm thế nào tôi có thể làm cho UserTabControl tải trên TabItem? Mục đích là mỗi tabitem sẽ chứa một usercontrol. Mỗi usercontrol sau đó làm điều riêng của nó.
Hy vọng ai đó có thể giúp tôi vì tôi là người mới bắt đầu WPF. Thx!
Xin chào Rachel. Thx cho ý kiến của bạn. Tôi hiểu logic bạn đang nói, nhưng tôi có một chút vất vả để làm cho nó hoạt động. Đặc biệt là một phần của ITabViewModel, bạn lấy nó từ đâu? Một phần khác của câu hỏi của tôi là làm thế nào tôi có thể làm điều này nếu tôi không biết có bao nhiêu tab nên được thêm vào? Tôi luôn luôn chắc chắn về một ít nhất một tab, nhưng các tab khác nên được thêm vào khi tôi nhấp vào một nút .. Thx cho sự giúp đỡ của bạn. – PitAttack76
@ Stieven76 'ITabViewModel' đơn giản là giao diện xác định thuộc tính' Header'. Các ViewModels A, B và C sẽ kế thừa từ 'ITabViewModel', vì vậy tất cả chúng đều chia sẻ cùng một lớp cơ sở.Vì bạn đang sử dụng MVVM, thuộc tính 'Command' của Button nên trỏ đến một lệnh trong' ViewModel', nó sẽ đơn giản thêm một đối tượng mới vào bộ sưu tập 'TabViewModels', và có thể thiết lập nó như được chọn. – Rachel
Thx Rachel. Tôi đã làm nó theo cách tôi muốn. Thx để được giúp đỡ! – PitAttack76