有些奇怪的事发生在我身上: - )
我有一个TabControl。 ItemSource绑定到列表。 这是TabItemBase的定义:
public class TabItemBase : UserControl
{
#region Properties
public virtual string TabName { get; set; }
public virtual string TabHeader { get; set; }
#endregion
}
这是我声明TabControl的XAML:
<TabControl ItemsSource="{Binding Views, Mode=TwoWay}" ItemContainerStyle="{StaticResource TabItemTemplate}"
SelectedItem="{Binding SelectedView}" Name="MainTabControl" />
样式工作正常,因为从这里我在List中添加一个视图时,它可以工作,我在我的UI中的TabControl中看到它。我只用
添加它View.Add(new HomeView());
然后我添加了一个管理导航的NavigationService,因为它的名字很明确:-)。这是代码:
public class NavigationService
{
#region ctor
public NavigationService(MainViewModel vm)
{
ViewModel = vm;
}
#endregion
#region Properties
public MainViewModel ViewModel { get; set; }
#endregion
#region Methods
public void NavigateTo(string viewName)
{
TabItemBase view = ViewModel.Views.FirstOrDefault(v => v.TabName.Equals(viewName));
if (view == null)
{
switch (viewName)
{
case ViewNames.Home:
view = new HomeView();
break;
case ViewNames.Carriers:
case ViewNames.Clients:
break;
case ViewNames.Commands:
view = new CommandsView();
break;
case ViewNames.Help:
case ViewNames.Inputs:
case ViewNames.Providers:
case ViewNames.Sorts:
case ViewNames.Users:
break;
default:
MessageBox.Show(DefaultMessages.NavigationFailed);
return;
}
ViewModel.Views.Add(view);
ViewModel.OnPropertyChanged("Views");
}
if (ViewModel.SelectedView != null && ViewModel.SelectedView.DataContext != null)
{
(ViewModel.SelectedView.DataContext as ViewModelBase).OnUnLoaded();
}
ViewModel.SelectedView = view;
(ViewModel.SelectedView.DataContext as ViewModelBase).OnLoaded();
}
#endregion
}
我这样做(点击我的按钮时):
NavigationService ns = new NavigationService(this);
ns.NavigateTo(ViewNames.Commands);
哪个不行。它在集合中添加了视图,但我没有在UI中看到它。
有人可以帮我解决这个问题吗?因为我开始松开毛发?
干杯
托马斯
答案 0 :(得分:0)
您的TabItemBase
必须继承TabItem
而不是UserControl
,或者您必须定义TabControl.ItemTemplate
。
让我知道哪种解决方案适合您。