利用Style达到切换界面的目的
同事传授来的,用在一些 控件较少,但是选择情况较多的时候。在后台使用 switch 切换 youType 会使效率更高,在前台切换缺点是,这些style都会被加载。
<ControlTemplate x:Key="youStyle1" TargetType="{x:Type Control}">
<Button x:Name="btnopen" Height="40" Width="200" HorizontalAlignment="Left" />
</ControlTemplate>
<ControlTemplate x:Key="youStyle2" TargetType="{x:Type Control}">
<Button x:Name="btnopen" Height="40" Width="200" HorizontalAlignment="Left" />
</ControlTemplate>
<ControlTemplate x:Key="youStyle3" TargetType="{x:Type Control}">
<Button x:Name="btnopen" Height="40" Width="200" HorizontalAlignment="Left" />
</ControlTemplate>
<Control Grid.Column="2">
<Control.Style>
<Style TargetType="{x:Type Control}">
<Style.Triggers>
<DataTrigger Binding="{Binding youType}" Value="youType1">
<Setter Property="Template" Value="{StaticResource youStyle1}"/>
</DataTrigger>
<DataTrigger Binding="{Binding youType}" Value="youType2">
<Setter Property="Template" Value="{StaticResource youStyle2}"/>
</DataTrigger>
<DataTrigger Binding="{Binding youType}" Value="youType3">
<Setter Property="Template" Value="{StaticResource youStyle3}"/>
</DataTrigger>
<DataTrigger Binding="{Binding youType}" Value="youType4">
<Setter Property="Template" Value="{StaticResource youStyle4}"/>
</DataTrigger>
<DataTrigger Binding="{Binding youType}" Value="youType5">
<Setter Property="Template" Value="{StaticResource youStyle5}"/>
</DataTrigger>
<DataTrigger Binding="{Binding youType}" Value="youType6">
<Setter Property="Template" Value="{StaticResource youStyle6}"/>
</DataTrigger>
<DataTrigger Binding="{Binding youType}" Value="youType7">
<Setter Property="Template" Value="{StaticResource youStyle7}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Control.Style>
</Control>
在使用<ItemsControl>时可以使用列表,需要用到绑定时,将binding 写在style里面,radiobutton在ItemsControl里面是需要联动请添加 GroupName
<ItemsControl ItemsSource="{Binding youItemSouse}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<Control >
<Control.Style>
<Style TargetType="{x:Type Control}">
<Style.Triggers>
<DataTrigger Binding="{Binding youType}" Value="youType1">
<Setter Property="Template" Value="{StaticResource youStyle1}"/>
</DataTrigger>
<DataTrigger Binding="{Binding youType}" Value="youType2">
<Setter Property="Template" Value="{StaticResource youStyle2}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Control.Style>
</Control>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>