Я создаю приложение WPF с mahapps
, prism
[модульность]. У меня есть код ниже HomeWindow.xaml
.Элементы управления завязкой с махапами и призмой - WPF
<Controls:MetroWindow x:Class="Project.Views.HomeWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
xmlns:local="clr-namespace:Project.Views"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
<!--The above code is for automatically binding of viewmodel into view-->
Height="700" Width="1200" Background="White">
<Grid>
<TabControl ItemsSource="{Binding TabCollection}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock Text="{Binding Name}"/>
</TextBlock>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<Label Content="{Binding Content}" />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
</Grid>
</Controls:MetroWindow>
У меня есть ниже структуры в моей HomeViewModel.cs
под ViewModels
каталога.
public class HomeViewModel : BindableBase
{
private ObservableCollection<Item> _tabCollection;
public ObservableCollection<Item> TabCollection { get { return _tabCollection; } set { SetProperty(ref _tabCollection, value); } }
//Prism way of getting and setting data
}
public class Item
{
private string Name;
private string Content;
public Item(string name, string content)
{
Name = name;
Content = content;
}
}
ниже, как добавить данные в TabCollection
собственность через HomeWindow.xaml.cs
.
private HomeViewModel _model=new HomeViewModel();
public HomeWindow(EmployeeViewModel model)
{
InitializeComponent();
_model.UserViewModel = model;
LoadHomeData(_model.UserViewModel.EmpRole);
DataContext = this;
}
private void LoadHomeData(string Role)
{
if (string.Equals(Role, "Admin"))
{
_model.TabCollection= new ObservableCollection<Item>()
{
new Item("Test1", "1"),
new Item("Test2", "2"),
new Item("Test3", "3")
};
}
}
Теперь важно, что вкладки не будут отображаться. Это пустое пустое окно. Я следовал примеру в issue here
и прошел несколько подобных сообщений с таким же подходом. Но никто из них не помог. Это из-за prism
способа databinding
или что-то еще здесь отсутствует? Надеюсь найти помощь по этому поводу.
Хороший улов приятель .. Но все-таки не повезло .. я сделал это 'public', как вы сказали .. . –
Вы также сделали это свойством, добавив '{get; задавать; } '? – dkozl
Да, я сделал .. Я сомневаюсь, что «призма» создает какую-то проблему здесь .. не уверен, хотя .. –