2011-04-12 40 views
5

什麼是wpf中的視覺狀態?任何人都知道如何開始理解和使用它?什麼是wpf中的視覺狀態?任何人都知道如何開始理解和使用它?

也許就像一個完整的教程,因爲我從來沒有觸及過視覺狀態。或只是一個簡單的例子代碼

THX耶

+2

一個簡單的谷歌搜索可能會幫助你。 – 2012-10-25 14:23:14

+0

這是2017年,我在WPF國家進行了必應搜索,它將我引導至此頁面。和https://www.youtube.com/watch?v=m0PlkF5i6uw :) – Tony 2017-06-16 20:27:25

回答

7

在WPF視覺狀態是有關控制的控件的外觀。控制狀態有可能改變,然後響應狀態改變而出現控制改變。例如,如果某個控件被按下/禁用/處於焦點狀態,則每個狀態的外觀可能會有所不同。有一個如何使用WPF的觸發機制來改變控件外觀的例子here;這將爲您提供一些有關更改控件外觀的一般背景信息。 在WPF here上有一個很好的通用教程,對視覺狀態here有很好的解釋。 對於更高級的使用有來自微軟的視覺狀態管理here

+0

第一個鏈接是好的,但它不是一個視覺狀態管理器教程,顯示視覺狀態管理器的最後一個鏈接已經死了... – 2016-06-30 20:24:31

+0

我改進了文字並修復了鏈接。 – 2017-10-02 18:06:20

1

可視狀態來改變控制的不同狀態WPF控件的外觀信息,例如採取單選按鈕的情況下,它可能出現不同而集中,而點擊或殘疾時,

可視狀態下不同的視覺狀態組瀑布一樣

  1. CommonStates
  2. CheckStates
  3. FocusStates

大多采用視覺狀態爲:

  1. 鼠標懸停
  2. 按下
  3. 殘疾人
  4. 經過
  5. 未檢查
  6. 不定
  7. 重點
  8. 沒有重點
  9. PointerFocused

在一個單選按鈕風格的visualSTATE使用的例子給出

<Style TargetType="RadioButton"> 
    <Setter Property="Background" 
      Value="Transparent" /> 
    <Setter Property="Foreground" 
      Value="{DynamicResource BlackBrush}" /> 
    <Setter Property="Padding" 
      Value="1,4,0,0" /> 
    <Setter Property="HorizontalAlignment" 
      Value="Stretch" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="RadioButton"> 
       <Border Background="{TemplateBinding Background}"> 
        <vsm:VisualStateManager.VisualStateGroups> 
         <vsm:VisualStateGroup x:Name="CommonStates"> 
          <vsm:VisualState x:Name="Normal" > 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundEllipse" 
                    Storyboard.TargetProperty="Stroke"> 
             <DiscreteObjectKeyFrame KeyTime="0" 
                   Value="{DynamicResource HpGray13Brush}" /> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </vsm:VisualState> 
          <vsm:VisualState x:Name="MouseOver"> 
           <Storyboard> 

            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundEllipse" 
                    Storyboard.TargetProperty="Stroke"> 
             <DiscreteObjectKeyFrame KeyTime="0" 
                   Value="{DynamicResource HpGray15Brush}" /> 
            </ObjectAnimationUsingKeyFrames> 

           </Storyboard> 
          </vsm:VisualState> 
          <vsm:VisualState x:Name="Pressed"> 
           <Storyboard> 

            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundEllipse" 
                    Storyboard.TargetProperty="Stroke"> 
             <DiscreteObjectKeyFrame KeyTime="0" 
                   Value="{DynamicResource GreenBrush}" /> 
            </ObjectAnimationUsingKeyFrames> 

           </Storyboard> 
          </vsm:VisualState> 
          <vsm:VisualState x:Name="Disabled"> 
           <Storyboard> 

            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundEllipse" 
                    Storyboard.TargetProperty="Stroke"> 
             <DiscreteObjectKeyFrame KeyTime="0" 
                   Value="{DynamicResource HpGray1Brush}" /> 
            </ObjectAnimationUsingKeyFrames> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CheckGlyph" 
                    Storyboard.TargetProperty="Fill"> 
             <DiscreteObjectKeyFrame KeyTime="0" 
                   Value="{DynamicResource Gray1Brush}" /> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </vsm:VisualState> 
         </vsm:VisualStateGroup> 
相關問題