我的 ViewModel 上有一个枚举属性:
视图模型:
public MyViewModel {
// Assume this is a DependancyProperty
public AvailableTabs SelectedTab { get; set; }
// Other bound properties
public string Property1 { get; set; }
public string Property2 { get; set; }
public string Property3 { get; set; }
}
public enum AvailableTabs {
Tab1,
Tab2,
Tab3
}
我希望能够将 TabControl 的 SelectedIndex(或 SelectedItem)绑定到此属性,并使用转换器正确设置适当的选项卡。不幸的是,我有点卡住了。我知道我可以轻松地在我的模型中使用 SelectedIndex,但我想要重新排序选项卡而不破坏任何东西的灵活性。我给每个 TabItem 一个适用枚举值的 Tag 属性。
我的 XAML:
<TabControl Name="MyTabControl" SelectedIndex="{Binding SelectedTab, Converter={StaticResource SomeConverter}}">
<TabItem Header="Tab 1" Tag="{x:Static local:AvailableTabs.Tab1}">
<TextBlock Text="{Binding Property1}" />
</TabItem>
<TabItem Header="Tab 2" Tag="{x:Static local:AvailableTabs.Tab2}">
<TextBlock Text="{Binding Property2}" />
</TabItem>
<TabItem Header="Tab 3" Tag="{x:Static local:AvailableTabs.Tab3}">
<TextBlock Text="{Binding Property3}" />
</TabItem>
</TabControl>
我的问题是我不知道如何将 TabControl 放入我的转换器中,所以我可以这样做:
// Set the SelectedIndex via the enum (Convert)
var selectedIndex = MyTabControl.Items.IndexOf(MyTabControl.Items.OfType<TabItem>().Single(t => (AvailableTabs) t.Tag == enumValue));
// Get the enum from the SelectedIndex (ConvertBack)
var enumValue = (AvailableTabs)((TabItem)MyTabControl.Items[selectedIndex]).Tag;
恐怕我多虑了。我尝试使用 MultiValue 转换器,但运气不佳。有任何想法吗?
繁星点点滴滴
子衿沉夜
相关分类