프로그래밍/WPF

[WPF] TabControl header Content Binding

흔한티벳여우 2022. 8. 3. 17:38
반응형

TabControl에 ItemsSource을 바인딩처리하여 MVVM 패턴을 적용할때, content는 바인딩하기는 쉬운데 스타일은 그대로 두고 Header의 이름만 바인딩 시키고 싶을 수 있다.

 

방법은 아래와 같다.

<TabControl TabStripPlacement="Top"
            ItemsSource="{Binding Tab}">
    <TabControl.ItemContainerStyle>
        <Style TargetType="TabItem">
            <Setter Property="Header" Value="{Binding Header}"/>
            <Setter Property="DataContext" Value="{Binding DataContext}"/>
        </Style>
    </TabControl.ItemContainerStyle>
</TabControl>
public class TabViewModel
{
    public string Header { get; set; }
    public object DataContext { get; set; }
}

public MainWindowViewModel()
{
    Tab = new ObservableCollection<TabViewModel>();
    Tab.Add(new TabViewModel { Header = "Test 1", DataContent = new ViewModel() });
    Tab.Add(new TabViewModel { Header = "Test 2", DataContent = new ViewModel() });
    Tab.Add(new TabViewModel { Header = "Test 3", DataContent = new ViewModel() });
}

이런식으로 바인딩해주면된다.

반응형