В основном я сталкиваюсь с той же проблемой, что и описанная в Binding MenuItem IsChecked to IsSelected TabItem с динамическими вкладками Я настроил TabControl так, чтобы он имел собственную модель представления. Также у меня было меню, которое привязывалось к тому же источнику. Произошло то, что привязка menuItem
isChecked
к isSelected
больше не работала. I thought IsSelected can not be found as there's no such property in viewModel
<Setter Property="IsChecked" Value="{Binding IsSelected, Mode=TwoWay}" />
Я попытался использовать предложенное решение для создания списка TabItem
, но получаю сообщение об ошибке Unable to cast object of type TabData to type TabItem
. Ниже мой xaml и конвертер. Я думал, что это не удастся, потому что во время построения TabControl.items
вернет экземпляр модели представления вместо UIControl TabItem
; Любые предложения, как сделать привязку здесь?
XAML
<Menu Background="Transparent">
<MenuItem
Style="{StaticResource TabMenuButtonStyle}"
ItemsSource="{Binding RelativeSource=
{RelativeSource FindAncestor,
AncestorType={x:Type TabControl}},
Path=Items,Mode=OneWay,NotifyOnSourceUpdated=True,Converter={StaticResource TabControlItemConverter}}"
ItemContainerStyle="{StaticResource TabMenuItemxxx}">
</MenuItem>
</Menu>
C#
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
ItemCollection ic = (ItemCollection)value;
List<TabItem> tabItems = new List<TabItem>();
foreach (var obj in ic)
{
tabItems.Add((TabItem)obj);
}
return tabItems;
}