대화 스타일(Style)
25177 단어 style
제목을 보시면 다음에 뭘 할지 다들 아실 거예요. 똑똑한 게 그렇게 생각해요~
설명: 모든 요소의 스타일은 FrameworkElement 또는 FrameworkContentElement이 파생됩니다. 스타일에서 보통 Resources 부분의 자원으로 성명할 수 있습니다.양식은 자원이기 때문에 모든 자원에 적용되는 동일한 범위 규칙을 준수하기 때문에, 양식이 적용될 수 있는 영향의 위치를 설명하는 데 사용된다.
스타일 선언에는 하나 이상의 객체 집합을 포함하는 Style 객체가 있습니다.각 Setter에는 Setter 및 Property가 포함됩니다.속성은 요소의 속성 이름이고 스타일은 에 적용됩니다.양식이 자원으로 성명되면 다른 자원과 인용할 수 있습니다.
주의: 여러 개의 setter 집합이 있는 setter가 같은 Value 속성 값을 가지고 있다면, 마지막으로 사용된 setter를 설명합니다.마찬가지로, 같은 속성의 값을 스타일과 요소에서 직접 설정하면, 요소의 값이 직접 우선됩니다.
스타일의 Windows Presentation Foundation(WPF)과 템플릿 모델은 검색과 표현과 논리의 분리를 유지하고 공유할 수 있습니다.스타일 및 템플릿 모델에는 UI 기능을 사용자 정의할 수 있는 키트가 포함되어 있습니다.Style 클래스는 다음과 같습니다.
1 >> Trigger
2 @basicTrigger
3 eg:
4 <Window.Resources>
5 <Style TargetType="CheckBox">
6 <Style.Triggers>
7 <Trigger Property="IsChecked" Value="True">
8 <Trigger.Setters>
9 <Setter Property="Foreground" Value="Orange"></Setter>
10 <Setter Property="FontSize" Value="18"></Setter>
11 </Trigger.Setters>
12 </Trigger>
13 </Style.Triggers>
14 </Style>
15 </Window.Resources>
16 >>MultiTrigger(MultiConditionTrigger)
17 @
18 eg:
19 <Window.Resources>
20 <Style TargetType="CheckBox">
21 <Style.Triggers>
22 <MultiTrigger>
23 <MultiTrigger.Conditions>
24 <Condition Property="IsChecked" Value="True"></Condition>
25 <Condition Property="Content" Value=" "></Condition>
26 </MultiTrigger.Conditions>
27 <MultiTrigger.Setters>
28 <Setter Property="FontSize" Value="20"/>
29 <Setter Property="FontWeight" Value="Bold"/>
30 </MultiTrigger.Setters>
31 </MultiTrigger>
32 </Style.Triggers>
33 </Style>
34 </Window.Resources>
35 >> DataTrigger
36 : 。
37 :DataTrigger Binding ,
38 Value ,DataTrigger 。
39 eg:
40 <Window.Resources>
41 <local:L2BConverter x:Key="L2BVal"/>
42 <Style TargetType="TextBox">
43 <Style.Triggers>
44 <DataTrigger Binding="{Binding RelativeSource={x:Static RelativeSource.Self},Path=Text.Length,Converter={ StaticResource ResourceKey=L2BVal}}" Value="false">
45 <Setter Property="BorderBrush" Value="Red"></Setter>
46 <Setter Property="BorderThickness" Value="2"></Setter>
47 </DataTrigger>
48 </Style.Triggers>
49
50 </Style>
51 </Window.Resources>
52 >> MultiDataTrigger
53 @
54 >> EventTrigger
55 @ : : , Setter
56 eg:
57 <Window.Resources>
58 <Style TargetType="Button">
59 <Style.Triggers>
60 <EventTrigger RoutedEvent="MouseEnter">
61 <BeginStoryboard>
62 <Storyboard>
63 <DoubleAnimation Duration="0:0:0.2" To="300" Storyboard.TargetProperty="Width"></DoubleAnimation>
64 </Storyboard>
65 </BeginStoryboard>
66 </EventTrigger>
67 <EventTrigger RoutedEvent="MouseLeave">
68 <BeginStoryboard>
69 <Storyboard>
70 <DoubleAnimation Duration="0:0:0.2" Storyboard.TargetProperty="Width"></DoubleAnimation>
71 </Storyboard>
72 </BeginStoryboard>
73 </EventTrigger>
74 </Style.Triggers>
75 </Style>
76 </Window.Resources>
1 >> ControlTemplate
2 <Style TargetType="Button">
3 <!--Set to true to not get any properties from the themes.-->
4 <Setter Property="OverridesDefaultStyle" Value="True"/>
5 <Setter Property="Template">
6 <Setter.Value>
7 <ControlTemplate TargetType="Button">
8 <Grid>
9 <Ellipse Fill="{TemplateBinding Background}"/>
10 <ContentPresenter HorizontalAlignment="Center"
11 VerticalAlignment="Center"/>
12 </Grid>
13 </ControlTemplate>
14 </Setter.Value>
15 </Setter>
16 </Style>
>> DataTemplate
<Page x:Class="WpfBrowserApplication1.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:System.Collections;assembly=mscorlib"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Title="Page1">
<Page.Resources>
<DataTemplate x:Key="itemTemplate">
<CheckBox Name="cb" Content="{Binding}"></CheckBox>
</DataTemplate>
</Page.Resources>
<Grid>
<ListBox ItemTemplate="{StaticResource itemTemplate}">
<ListBox.ItemsSource>
<c:ArrayList>
<sys:DateTime>1987-10-21</sys:DateTime>
<sys:DateTime>1987-10-21</sys:DateTime>
<sys:DateTime>1987-10-21</sys:DateTime>
<sys:DateTime>1987-10-21</sys:DateTime>
<sys:DateTime>1987-10-21</sys:DateTime>
</c:ArrayList>
</ListBox.ItemsSource>
</ListBox>
</Grid>
</Page>
:Style Triggers
<Page.Resources>
<DataTemplate x:Key="itemTemplate">
<CheckBox Name="cb" Content="{Binding}"></CheckBox>
</DataTemplate>
<Style TargetType="{x:Type CheckBox}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="IsChecked" Value="true"></Setter>
<Setter Property="Foreground" Value="red"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</Page.Resources>
:DataTrigger
<Page.Resources>
<DataTemplate x:Key="itemTemplate">
<CheckBox Name="cb" Content="{Binding}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Month}" Value="10">
<Setter TargetName="cb" Property="IsChecked" Value="true"></Setter>
<Setter TargetName="cb" Property="Foreground" Value="red"></Setter>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
<Style TargetType="{x:Type CheckBox}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="IsChecked" Value="true"></Setter>
<Setter Property="Foreground" Value="red"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</Page.Resources>
Style.BasedOn 속성
1 <Window x:Class="StyleBasedOn.MainWindow"
2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4 Title="MainWindow" Height="350" Width="525">
5 <Window.Resources>
6 <Style x:Key="style1" TargetType="{x:Type Button}" >
7 <Setter Property="Background" Value="Yellow"></Setter>
8 <Setter Property="FontSize" Value="20"></Setter>
9 </Style>
10 <Style x:Key="style2" TargetType="{x:Type TextBlock}">
11 <Setter Property="Foreground" Value="Red"></Setter>
12 </Style>
13 <Style x:Key="style3" TargetType="{x:Type Button}" BasedOn="{StaticResource style1}">
14 <Setter Property="FontStyle" Value="Italic"></Setter>
15 </Style>
16 </Window.Resources>
17 <Grid>
18 <StackPanel>
19 <Button Width="100" Height="50" Click="Button_Click" Content=" " Style="{StaticResource style3}"></Button>
20 <TextBlock FontSize="20" Tag="1" Style="{StaticResource style2}"> </TextBlock>
21 </StackPanel>
22 </Grid>
23 </Window>
주의:1.각 스타일에는 BasedOn 값이 하나만 지원됩니다.
2.DataTemplate 속성을 사용하여 스타일을 만들고 그것에 따라 TargetType 속성의 다른 스타일을 정의하려면, 기본 스타일의 유형과 파생된 스타일의 대상 유형을 파생시켜야 합니다.