기본적으로 Binding MenuItem's IsChecked to TabItem's IsSelected with dynamic tabs 에 설명 된 것과 동일한 문제가 있습니다. TabControl에 자체 viewModel을 사용자 정의했습니다. 또한 동일한 소스에 바인딩하는 메뉴가 있습니다. 무슨 일이 일어 났습니까? menuItem
의 isChecked
~ isSelected
은 더 이상 작동하지 않습니다. 내가 솔루션을 사용하려고MenuItem의 IsChecked를 TabItem의 isSelected로 바인딩
<Setter Property="IsChecked" Value="{Binding IsSelected, Mode=TwoWay}" />
I thought IsSelected can not be found as there's no such property in viewModel
는 TabItem
의 목록을 구성하기 위해 제안하지만 오류 Unable to cast object of type TabData to type TabItem
를 얻을. 아래 내 xaml 및 변환기입니다. 나는 공사 도중 TabControl.items
이 UIControl TabItem
대신 viewmodel 인스턴스를 반환하기 때문에 실패했다고 생각했습니다. 여기에 바인딩하는 방법에 대한 제안?
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;
}
여기
타이, 매우 아름다운 대답! 'CommandParameter = "{Binding}"은'TabItem'이 자신에게 속한다고 어떻게 추측합니까? – baozi
@baozi,'{Binding} '은이 경우 TabData 클래스의 인스턴스 인 요소에 바인드 된 객체를 참조합니다. Unqualified {Binding} 구문과 [Binding Path Syntax] (http())에 대한 자세한 내용은 [Binding Markup Extension] (http://msdn.microsoft.com/en-us/library/ms750413(v=vs.110).aspx)을 참조하십시오. : //msdn.microsoft.com/en-us/library/ms752300 (v = vs.110) .aspx # Path_Syntax)를 참조하십시오. 나는이 솔루션이 당신의 문제를 해결하는 데 도움이 되었기 때문에 기쁘다. 마지막하지만 적어도, 행복한 코딩 :) – pushpraj