亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

WPF自動(dòng)隱藏的消息框的實(shí)例代碼

 更新時(shí)間:2016年07月11日 16:59:44   作者:逆天の萌娃  
本文給大家介紹WPF自動(dòng)隱藏的消息框?qū)嵗a,當(dāng)鼠標(biāo)放上去將一直顯示,移開動(dòng)畫繼續(xù),提供normal和error兩種邊框。非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧

(鼠標(biāo)放上去將一直顯示,移開動(dòng)畫繼續(xù)),提供normal和error兩種邊框。

介紹:傳統(tǒng)的確定,取消,OK,CANCAL之類的對(duì)話框太繁瑣了,由于項(xiàng)目需要而誕生的仿手機(jī)式提示對(duì)話框。當(dāng)然傳統(tǒng)的對(duì)話框項(xiàng)目中也有,這里就不做介紹了。

出場(chǎng)和退場(chǎng)動(dòng)畫做得很簡(jiǎn)單,就用Blend隨便鼓搗了一番,將就用吧。

預(yù)覽效果如下:

思路其實(shí)很簡(jiǎn)單:將窗體透明化->布局和樣式設(shè)計(jì)->后臺(tái)傳值調(diào)用。

準(zhǔn)備工作:Microsoft.Expression.Interactions.dll和System.Windows.Interactivity.dll的引用。Blend中大多數(shù)行為需要需要這2個(gè)dll,必備?。?br />

1,將窗體透明化,無邊框化:(在.net 4.5中 拖動(dòng)和縮放窗體再也不用自己寫代碼了,集成的 <WindowChrome/>就可以實(shí)現(xiàn)拖動(dòng)縮放窗體等諸多功能。)

關(guān)鍵設(shè)置如下:

AllowsTransparency="True" HorizontalAlignment="Center" Background="Transparent" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" WindowStyle="None"

2,布局,主要包括初始布局和動(dòng)畫過渡2個(gè)方面:

靜態(tài)界面布局:

<Grid  HorizontalAlignment="Center" VerticalAlignment="Top" x:Name="back">
    <Border Padding="38 0" x:Name="br" HorizontalAlignment="Center" VerticalAlignment="Center">
      <i:Interaction.Triggers>
        <i:EventTrigger EventName="MouseEnter">
          <ei:ControlStoryboardAction Storyboard="{StaticResource ShowSb}" ControlStoryboardOption="Stop"/>
        </i:EventTrigger>
        <i:EventTrigger EventName="MouseLeave">
          <ei:ControlStoryboardAction Storyboard="{StaticResource MouseLeave}"/>
        </i:EventTrigger>
      </i:Interaction.Triggers>
      <Grid HorizontalAlignment="Center" VerticalAlignment="Center">
        <Grid HorizontalAlignment="Center" VerticalAlignment="Center">
          <Grid.RowDefinitions>
            <RowDefinition Height="12"></RowDefinition>
            <RowDefinition Height="auto"></RowDefinition>
            <RowDefinition Height="12"></RowDefinition>
          </Grid.RowDefinitions>
          <Border Visibility="Visible" x:Name="grid1" Grid.RowSpan="3" RenderTransformOrigin="0.5,0.5" BorderBrush="#00A0E9" BorderThickness="1" CornerRadius="8">
            <Border.RenderTransform>
              <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform/>
                <TranslateTransform/>
              </TransformGroup>
            </Border.RenderTransform>
            <Border.Background>
              <LinearGradientBrush EndPoint="1,1" MappingMode="RelativeToBoundingBox" StartPoint="0,0">
                <GradientStop Color="#EFF0F2" Offset="0.75"/>
                <GradientStop Color="#EFF0F2" Offset="0.25"/>
                <GradientStop Color="#EFF0F2" Offset="1"/>
                <GradientStop Color="#EFF0F2"/>
              </LinearGradientBrush>
            </Border.Background>
          </Border>
          <Border x:Name="grid2" Visibility="Visible" Opacity="1" Grid.RowSpan="3" RenderTransformOrigin="0.5,0.5" BorderBrush="#F35150" BorderThickness="1" CornerRadius="8">
            <Border.RenderTransform>
              <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform/>
                <TranslateTransform/>
              </TransformGroup>
            </Border.RenderTransform>
            <Border.Background>
              <LinearGradientBrush EndPoint="1,1" MappingMode="RelativeToBoundingBox" StartPoint="0,0">
                <GradientStop Color="#EFF0F2" Offset="0.75"/>
                <GradientStop Color="#EFF0F2" Offset="0.25"/>
                <GradientStop Color="#EFF0F2" Offset="1"/>
                <GradientStop Color="#EFF0F2"/>
              </LinearGradientBrush>
            </Border.Background>
          </Border>
          <TextBlock  Margin="38 0 38 0" Grid.Row="1" FontSize="16" Foreground="#64676d" x:Name="tb" Text="{Binding Message,RelativeSource={RelativeSource AncestorType=Window},FallbackValue=失敗信息}" TextWrapping="Wrap" MinWidth="200" VerticalAlignment="Center" HorizontalAlignment="Center" RenderTransformOrigin="0.5,0.5" MaxWidth="600" TextAlignment="Center" FontFamily="Microsoft YaHei">
            <TextBlock.RenderTransform>
              <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform/>
                <TranslateTransform/>
              </TransformGroup>
            </TextBlock.RenderTransform></TextBlock>
        </Grid>
      </Grid>
    </Border>
  </Grid>

進(jìn)入和退出的動(dòng)畫控制:

<Storyboard x:Key="ShowSb" Completed="Storyboard_Completed">
      <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="grid1">
        <EasingDoubleKeyFrame KeyTime="0" Value="{Binding YOffSet}"/>
        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/>
        <EasingDoubleKeyFrame KeyTime="0:0:3" Value="0"/>
        <EasingDoubleKeyFrame KeyTime="0:0:3.5" Value="{Binding YOffSet}"/>
      </DoubleAnimationUsingKeyFrames>
      <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="grid2">
        <EasingDoubleKeyFrame KeyTime="0" Value="{Binding YOffSet}"/>
        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/>
        <EasingDoubleKeyFrame KeyTime="0:0:3" Value="0"/>
        <EasingDoubleKeyFrame KeyTime="0:0:3.5" Value="{Binding YOffSet}"/>
      </DoubleAnimationUsingKeyFrames>
      <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="tb">
        <EasingDoubleKeyFrame KeyTime="0" Value="{Binding YOffSet}"/>
        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/>
        <EasingDoubleKeyFrame KeyTime="0:0:3" Value="0"/>
        <EasingDoubleKeyFrame KeyTime="0:0:3.5" Value="{Binding YOffSet}"/>
      </DoubleAnimationUsingKeyFrames>
    </Storyboard>
    <Storyboard x:Key="MouseLeave" Completed="Storyboard_Completed">
      <DoubleAnimationUsingKeyFrames  Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="grid1">
        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/>
      </DoubleAnimationUsingKeyFrames>
      <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="grid2">
        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/>
      </DoubleAnimationUsingKeyFrames>
      <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="tb">
        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/>
      </DoubleAnimationUsingKeyFrames>
      <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="grid1">
        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="{Binding YOffSet}"/>
      </DoubleAnimationUsingKeyFrames>
      <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="grid2">
        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="{Binding YOffSet}"/>
      </DoubleAnimationUsingKeyFrames>
      <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="tb">
        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="{Binding YOffSet}"/>
      </DoubleAnimationUsingKeyFrames>
    </Storyboard>

注意:鼠標(biāo)移動(dòng)上去停止動(dòng)畫和移出后快速消失的代碼為:

<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseEnter">
<ei:ControlStoryboardAction Storyboard="{StaticResource ShowSb}" ControlStoryboardOption="Stop"/>
</i:EventTrigger>
<i:EventTrigger EventName="MouseLeave">
<ei:ControlStoryboardAction Storyboard="{StaticResource MouseLeave}"/>
</i:EventTrigger>
</i:Interaction.Triggers> 

后臺(tái)代碼邏輯:

private bool iserror = false;
public void Show(string messageBoxText, bool iserror = false)
{
this.iserror = iserror;
this.Message = messageBoxText;
this.Show();
}
public OnlyShowMessageBox()
{
InitializeComponent();
this.DataContext = new model() { YOffSet = -300d };
this.Loaded += (y, k) =>
{
this.Top = 41;
this.Left = (SystemParameters.WorkArea.Width) / 2 - this.ActualWidth / 2;
if (iserror)
{
this.grid.Visibility = Visibility.Collapsed;
}
else { this.grid.Visibility = Visibility.Collapsed; }
(this.Resources["ShowSb"] as Storyboard).Begin();
};
}
private void Storyboard_Completed(object sender, EventArgs e)
{
this.Close();
} 

其中 :

public class model : ModelBase
{
private double YOffset;
public double YOffSet
{
get { return YOffset; }
set
{
YOffset = value;
RaisePropertyChangedEvent("YOffSet");
}
}
} 

其中ModelBase在 可分組的選擇框控件(MVVM下)(Toggle樣式 仿造單選框RadioButton,復(fù)選框CheckBox功能) 中有介紹。

最后,調(diào)用方法:

new OnlyShowMessageBox().Show("請(qǐng)注意:前方高能,禁止入內(nèi)!", false);

或者

new OnlyShowMessageBox().Show("不存在此對(duì)象!", true);

以上所述是小編給大家介紹的WPF自動(dòng)隱藏的消息框的全部敘述,希望對(duì)大家有所幫助,如果大家想了解更多內(nèi)容敬請(qǐng)關(guān)注腳本之家!

相關(guān)文章

最新評(píng)論