国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

WPF自動隱藏的消息框的實例代碼

2019-10-29 21:24:12
字體:
來源:轉載
供稿:網友

(鼠標放上去將一直顯示,移開動畫繼續),提供normal和error兩種邊框。

介紹:傳統的確定,取消,OK,CANCAL之類的對話框太繁瑣了,由于項目需要而誕生的仿手機式提示對話框。當然傳統的對話框項目中也有,這里就不做介紹了。

出場和退場動畫做得很簡單,就用Blend隨便鼓搗了一番,將就用吧。

預覽效果如下:

wpf消息框

思路其實很簡單:將窗體透明化->布局和樣式設計->后臺傳值調用。

準備工作:Microsoft.Expression.Interactions.dll和System.Windows.Interactivity.dll的引用。Blend中大多數行為需要需要這2個dll,必備啊!

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

關鍵設置如下:

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,布局,主要包括初始布局和動畫過渡2個方面:

靜態界面布局:

<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>

進入和退出的動畫控制:

<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>

注意:鼠標移動上去停止動畫和移出后快速消失的代碼為:

<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> 

后臺代碼邏輯:

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,復選框CheckBox功能) 中有介紹。

最后,調用方法:

new OnlyShowMessageBox().Show("請注意:前方高能,禁止入內!", false);

或者

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

以上所述是小編給大家介紹的WPF自動隱藏的消息框的全部敘述,希望對大家有所幫助,如果大家想了解更多內容敬請關注VEVB武林網!


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 扎赉特旗| 科技| 呼伦贝尔市| 鄯善县| 常宁市| 泽普县| 射洪县| 弋阳县| 文昌市| 同心县| 陕西省| 阿克陶县| 正阳县| 杭州市| 绍兴县| 东港市| 丽水市| 健康| 三穗县| 内乡县| 抚顺县| 神木县| 龙南县| 两当县| 金山区| 北碚区| 昂仁县| 武鸣县| 邯郸市| 唐海县| 新巴尔虎右旗| 海口市| 常宁市| 嘉善县| 布拖县| 甘肃省| 横峰县| 霍林郭勒市| 昭苏县| 江安县| 保定市|