대화 스타일(Style)

25177 단어 style
WPF를 독학한 후 지금까지 프로젝트에서 사용하지 않았는데 오늘 작은 프로젝트에서 사용했는데 잊어버렸어요. 마지막으로 생각해보면 필기를 좀 해서 나중에 복습하기 편해요!잡담은 그만하고 주제에 들어갑시다.
제목을 보시면 다음에 뭘 할지 다들 아실 거예요. 똑똑한 게 그렇게 생각해요~
설명: 모든 요소의 스타일은 FrameworkElement 또는 FrameworkContentElement이 파생됩니다. 스타일에서 보통 Resources 부분의 자원으로 성명할 수 있습니다.양식은 자원이기 때문에 모든 자원에 적용되는 동일한 범위 규칙을 준수하기 때문에, 양식이 적용될 수 있는 영향의 위치를 설명하는 데 사용된다.
스타일 선언에는 하나 이상의 객체 집합을 포함하는 Style 객체가 있습니다.각 Setter에는 SetterProperty가 포함됩니다.속성은 요소의 속성 이름이고 스타일은 에 적용됩니다.양식이 자원으로 성명되면 다른 자원과 인용할 수 있습니다.
주의: 여러 개의 setter 집합이 있는 setter가 같은 Value 속성 값을 가지고 있다면, 마지막으로 사용된 setter를 설명합니다.마찬가지로, 같은 속성의 값을 스타일과 요소에서 직접 설정하면, 요소의 값이 직접 우선됩니다.
스타일의 Windows Presentation Foundation(WPF)과 템플릿 모델은 검색과 표현과 논리의 분리를 유지하고 공유할 수 있습니다.스타일 및 템플릿 모델에는 UI 기능을 사용자 정의할 수 있는 키트가 포함되어 있습니다.Style 클래스는 다음과 같습니다.
  • Property
  • TriggerEventTrigger
  • Storyboard
  • ControlTemplate

  •  
     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 속성의 다른 스타일을 정의하려면, 기본 스타일의 유형과 파생된 스타일의 대상 유형을 파생시켜야 합니다.
        
        
           
         

    좋은 웹페이지 즐겨찾기