所以我有TabControl
。我想将ItemsSource
绑定到我的ViewModel集合,以便动态添加标签。类似的东西:
<TabControl ItemsSource="{Binding Path=Cities}">
<TabItem Header="Settings" x:Name="settingsTab" />
</TabControl>
其中Cities
是ObservableCollection
类型的City
。但是,我希望第一个标签显示SettingsView
。 Cities
中的项目应显示CityView
。选项卡控件只是一个导航面板,我基本上试图将settings
放在第一个位置,然后是动态数量的城市。
最优雅的解决方案是什么?我宁愿不使用包含所有城市模型后面的设置模型的随机集合来污染我的视图模型。
答案 0 :(得分:0)
如果您不希望选项卡控件成为城市列表,则需要使用DataContext而不是ItemsSource。然后,您可以将cities对象绑定到TabItems Content
中的列表视图示例:
public class City
{
public string Name {get;set;}
public string SettingOne {get;set;}
public string SettingTwo {get;set;}
}
<TabControl DataContext="{Binding Path=Cities}">
<TabItem Header="Settings" x:Name="settingsTab">
<TabItem.Content>
<ListView ItemsSource="{Binding}">
<ListView.ItemTemplate>
<TextBox Text="{Binding Path=SettingOne}"></TextBox>
...
</ListView.ItemTemplate>
</StackPanel>
</TabItem.Content>
</TabItem>
</TabControl>