TabControl에서 마지막 탭을 오른쪽 정렬하는 방법이 있습니까? 마지막 몇 개를 처음 몇 개 만들고 싶습니다.마지막 TabControl 탭을 오른쪽 정렬하는 방법?
감사합니다.
TabControl에서 마지막 탭을 오른쪽 정렬하는 방법이 있습니까? 마지막 몇 개를 처음 몇 개 만들고 싶습니다.마지막 TabControl 탭을 오른쪽 정렬하는 방법?
감사합니다.
Here은 TabControl 탭 템플릿에 대한 예제 프로젝트입니다. 아마도 "자동", * 및 "자동"너비의 세 열이있는 표를 사용하고 첫 번째 열에 StackPanel을 놓고 탭의 첫 번째 세트를 잡고 마지막 열을 그 중간의 마지막 열에 넣으십시오 열이 비어 있고 나머지 공간을 차지합니다.
이 게시물은 오래된 것일 수 있지만 같은 질문에 대한 답변을 검색하는 동안 우연히 발견되어 결국 내가 생각한 빠르고 빠지기 쉬운 해결책을 공유하게되었습니다. OnTabFocused 이벤트 처리기에서,
<Grid>
<TabControl x:Name="_tabsRight" GotFocus="OnTabFocused" >
<TabControl.Resources>
<Style TargetType="TabPanel">
<Setter Property="HorizontalAlignment" Value="Right"/>
</Style>
</TabControl.Resources>
<TabItem x:Name="JustAHiddenTabItemToDeselectTheRealOne" Visibility="Hidden" />
<!-- Last tab -->
<TabItem Header="Last one" >
<!-- Last content... -->
</TabItem>
</TabControl>
<TabControl x:Name="_tabsLeft" GotFocus="OnTabFocused" >
<!-- First tab -->
<TabItem Header="1st" >
<!-- First content... -->
</TabItem>
<!-- Second tab -->
<TabItem Header="2nd" >
<!-- Second content... -->
</TabItem>
</TabControl>
</Grid>
다음 :
난 그냥 그리드에서 서로의 상단에 두 개의 TabControls를 넣어 (감사 Meleak에 외출) 중 하나의 탭 패널을 오른쪽으로 정렬 당신이 개 왼쪽에있는 탭과 오른쪽에 하나를 가지고 싶다면private int _zIncrementor = 0;
/// <summary>
/// Hack to make two TabControls act as one.
/// </summary>
private void OnTabFocused(object sender, RoutedEventArgs e)
{
var tab = (TabControl)sender;
var otherTab = (tab == _tabsLeft) ? _tabsRight : _tabsLeft;
Grid.SetZIndex(tab, ++_zIncrementor);
otherTab.SelectedItem = null;
}
, 당신 선적 지시 밖에 해줄 세 번째 보이지 않는 탭이 할 수 있습니다 : 사용자가 TabItem의를 클릭 할 때, 우리는 앞으로 가장 아래에 TabControl을 가지고 필요 보이지 않는 탭의 width
은 나머지 공간을 제공하는 의 Actualwidth
에서 보이는 세 개의 탭 중 Width
을 뺍니다.
public MainWindow()
{
InitializeComponent();
this.SizeChanged += window_SizeChanged;
}
private void window_SizeChanged(object sender, SizeChangedEventArgs e)
{
invisibletab.Width = this.ActualWidth - 550; // where the 550 is the sum of the actual width of visible tabs
}
Downvoters. . 윌이 왜이 downvoted에 대한 의견을 남겨주세요. 이것은 질문에 대한 가장 간단한 작업 솔루션입니다. – Gopichandar
내가 기본 탭을 클릭 할 수 없습니다 : 여기
샘플 코드를백엔드 코드입니다. 다음 코드를 통해 mousedown 이벤트 처리기를 추가했습니다. private void _tabs_MouseLeftButtonDown (object sender, MouseButtonEventArgs e) { Point pt = e.GetPosition ((UIElement) sender); var element = this.InputHitTest (pt) as System.Windows.Controls.Primitives.TabPanel; if (element! = null && _tabsLeft.IsAncestorOf (element)) { _tabsRight.Focus(); _tabsRight.SelectedIndex = 1; } } – Derrick
@ 데릭 - 감사합니다! 나에게 제안 된 대답은 디버그 모드에서 잘 작동했지만, 결국 응용 프로그램을 릴리스했을 때 비슷한 트릭을 수행해야한다는 것을 알았습니다. – Sphinxxx