最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

出場(chǎng)和退場(chǎng)動(dòng)畫(huà)做得很簡(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,必備啊!

1,將窗體透明化,無(wú)邊框化:(在.net 4.5中 拖動(dòng)和縮放窗體再也不用自己寫(xiě)代碼了,集成的 <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)畫(huà)過(guò)渡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)畫(huà)控制:

<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)畫(huà)和移出后快速消失的代碼為:

<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)文章

  • C#新手常犯的錯(cuò)誤匯總

    C#新手常犯的錯(cuò)誤匯總

    這篇文章主要介紹了C#新手常犯的錯(cuò)誤匯總,對(duì)于經(jīng)驗(yàn)豐富的C#程序員同樣具有很好的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-08-08
  • c#中判斷字符串是不是數(shù)字或字母的方法

    c#中判斷字符串是不是數(shù)字或字母的方法

    這篇文章介紹了C#判斷字符串是否數(shù)字或字母的實(shí)例,有需要的朋友可以參考一下
    2013-06-06
  • C# char[]與string byte[]與string之間的轉(zhuǎn)換詳解

    C# char[]與string byte[]與string之間的轉(zhuǎn)換詳解

    在本篇文章里小編給大家分享的是關(guān)于C# char[]與string byte[]與string之間的轉(zhuǎn)換的知識(shí)點(diǎn)內(nèi)容,需要的朋友們參考下
    2019-11-11
  • C# 獲取XML文件內(nèi)容的多種方式總結(jié)

    C# 獲取XML文件內(nèi)容的多種方式總結(jié)

    這篇文章主要介紹了C# 獲取XML文件內(nèi)容的多種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C#入門(mén)教程之集合ArrayList用法詳解

    C#入門(mén)教程之集合ArrayList用法詳解

    這篇文章主要介紹了C#入門(mén)教程之集合ArrayList用法,結(jié)合具體實(shí)例分析了C#中集合的概念、功能、創(chuàng)建與使用方法,需要的朋友可以參考下
    2017-06-06
  • C# 開(kāi)發(fā)step步驟條控件詳解

    C# 開(kāi)發(fā)step步驟條控件詳解

    本篇文章主要介紹了用C#來(lái)實(shí)現(xiàn)一個(gè)step控件的方法步驟,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • c# winform多線程死循環(huán)踩坑

    c# winform多線程死循環(huán)踩坑

    本文主要介紹了c# winform多線程死循環(huán)踩坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • C#利用QrCode.Net生成二維碼(Qr碼)的方法

    C#利用QrCode.Net生成二維碼(Qr碼)的方法

    QrCode.Net是一個(gè)使用C#編寫(xiě)的用于生成二維碼圖片的類(lèi)庫(kù),使用它可以非常方便的為WinForm、WebForm、WPF、Silverlight和Windows Phone 7應(yīng)用程序提供二維碼編碼輸出功能??梢詫⒍S碼文件導(dǎo)出為eps格式
    2016-12-12
  • C#中Byte轉(zhuǎn)換相關(guān)的函數(shù)

    C#中Byte轉(zhuǎn)換相關(guān)的函數(shù)

    這篇文章主要介紹了C#中Byte轉(zhuǎn)換相關(guān)的函數(shù)介紹,非常具有參考借鑒價(jià)值,特此分享到腳本之家平臺(tái)供大家學(xué)習(xí)
    2016-05-05
  • C# DataTable的詳細(xì)用法分享

    C# DataTable的詳細(xì)用法分享

    在項(xiàng)目中經(jīng)常用到DataTable,如果DataTable使用得當(dāng),不僅能使程序簡(jiǎn)潔實(shí)用,而且能夠提高性能,達(dá)到事半功倍的效果,現(xiàn)對(duì)DataTable的使用技巧進(jìn)行一下總結(jié)
    2013-11-11

最新評(píng)論

呼伦贝尔市| 嘉定区| 莫力| 红安县| 青海省| 大城县| 民和| 安泽县| 巴马| 汕尾市| 安庆市| 南乐县| 七台河市| 铜鼓县| 昌江| 双牌县| 鄂托克旗| 庆城县| 彭泽县| 襄垣县| 保靖县| 陵川县| 济阳县| 九龙县| 思茅市| 吉木乃县| 潍坊市| 日照市| 衡东县| 花垣县| 屏南县| 新野县| 寿宁县| 麟游县| 浦县| 织金县| 神农架林区| 岐山县| 白城市| 汨罗市| 奉新县|