ContentControl
을 사용하면 콘텐츠를 호스팅하고 내용을 그리는 방법에 따라 ContentControl.ContentTemplate
을 설정할 수 있습니다. 아주 기본적인 예를 들어
,
<ContentControl x:Name="MyContentControl">
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding }" Value="Home">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<local:MyHomeUsercontrol />
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding }" Value="Players">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<local:MyPlayersUsercontrol />
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding }" Value="Team">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<local:MyTeamUsercontrol />
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style>
</ContentControl.Style>
</ContentControl>
그리고 당신은 클래스 객체 등을 사용했다 그러나 만약 내가 ContentControl.Content
에 대한 string
을 사용하고이 예에서 MenuItem.Click
MyContentControl.Content = "Home"; // or "Players" or "Team"
에 HomeViewModel
또는 PlayersViewModel
으로 XAML을 단순화하여 WPF가 특정 클래스를 그릴 때마다 자동으로 사용되는 템플릿 인 암시 적 데이터 템플릿을 사용할 수 있습니다
<Window.Resources>
<DataTemplate DataType="{x:Type HomeViewModel}">
<local:MyHomeUserControl />
</DataTemplate>
<DataTemplate DataType="{x:Type PlayersViewModel}">
<local:MyPlayersUserControl />
</DataTemplate>
<DataTemplate DataType="{x:Type TeamViewmModel}">
<local:MyTeamUserControl />
</DataTemplate>
</Window.Resources>
<ContentControl x:Name="MyContentControl" />
및
MyContentControl.Content = new HomeViewModel();
그래서, 다음 탭 항목에서 나는 템플릿을 정의? – Flipper
올바른지, 탭 항목에서 헤더에 내용을 넣을 곳이 있고 필요한 경우 TabHeaderTemplate을 사용하여 헤더 스타일을 지정할 수도 있습니다. – Steoates
@Flipper 업데이트 된 코드를 참조하십시오. – Steoates