zoukankan      html  css  js  c++  java
  • WPF 如何自定义一个弹框

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

    简述

      手工以原生Grid的方式,自定义了一个仿弹窗效果,优点可以自定义,缺点需要自己实现以及维护整个弹窗的效果 

    效果图

      

    思路

      直接画好页面,控制它的展示消失即可

    代码

      1.xaml的弹框,下面的按钮是自定义的样式

    <!--确认xlsx的模态框自定义ConfirmedModalBox-->
            <Border x:Name="incConfirmedModalBox"  Grid.Column="1" Margin="-160,-80,30,10"  Width="430" Height="500"  BorderBrush="#000" BorderThickness="1" Background="White" Visibility="Collapsed">
                <!--Margin="6,6,6,6"-->
                <Grid Width="430" Height="500" Background="White" >
                    <Grid.RowDefinitions>
                        <RowDefinition Height="40"/>
                        <RowDefinition />
                        <RowDefinition Height="70"/>
                    </Grid.RowDefinitions>
                    <Grid Grid.Row="0">
                        <!-- Background="Aqua"-->
                        <TextBlock Margin="30,15,0,0">请确认</TextBlock>
                    </Grid>
                    <Grid Grid.Row="1">
                        <Grid >
                            <ScrollViewer Margin="30,0,0,0" VerticalScrollBarVisibility="Auto" >
                                <!--VerticalScrollBarVisibility="Auto"-->
                                <StackPanel Margin="0,0,0,0" HorizontalAlignment="Left"  VerticalAlignment="Stretch" x:Name="incModalStackPane1" >
                                    <!--<Grid Width="400" Height="22">
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="*"></ColumnDefinition>
                                            <ColumnDefinition Width="*"></ColumnDefinition>
                                        </Grid.ColumnDefinitions>
                                        <TextBlock Grid.Column="0" Margin="0 5">test1.inc</TextBlock>
                                        <TextBlock Grid.Column="1"  Margin="0 5">2018-08-11 23:11:13</TextBlock>
                                    </Grid>
                                    <Grid Width="400" Height="22">
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="*"></ColumnDefinition>
                                            <ColumnDefinition Width="*"></ColumnDefinition>
                                        </Grid.ColumnDefinitions>
                                        <TextBlock Grid.Column="0" Margin="0 5">test1.inc</TextBlock>
                                        <TextBlock Grid.Column="1" Margin="0 5">2018-08-11 23:11:13</TextBlock>
                                    </Grid>-->
                                </StackPanel>
                            </ScrollViewer>
                        </Grid>
                    </Grid>
                    <Grid Grid.Row="2">
                        <!-- Background="Aqua"-->
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*"></ColumnDefinition>
                            <ColumnDefinition Width="*"></ColumnDefinition>
                        </Grid.ColumnDefinitions>
                        <Button Grid.Column="0" Style="{StaticResource ButtonStyle}" x:Name="incModalConfirm"  Content="确定" HorizontalAlignment="Left" Margin="95,15,0,0" VerticalAlignment="Top"  Width="90" Height="26"  PreviewMouseLeftButtonUp="incModalConfirm_PreviewMouseLeftButtonUp">
                            <Button.Template>
                                <ControlTemplate TargetType="{x:Type Button}">
                                    <Border BorderBrush="{TemplateBinding Control.BorderBrush}" BorderThickness="0" CornerRadius="6,6,6,6" Name="PART_Background">
                                        <Border.Background>
                                            <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                                                <GradientStop Color="#FF006BB9"  />
                                                <GradientStop Color="#006AB9"  />
                                            </LinearGradientBrush>
                                        </Border.Background>
                                        <ContentPresenter Content="{TemplateBinding ContentControl.Content}" HorizontalAlignment="Center" VerticalAlignment="Center" />
                                    </Border>
                                </ControlTemplate>
                            </Button.Template>
                        </Button>
                        <Button Grid.Column="1"  Style="{StaticResource ButtonStyle}" x:Name="incModalCancel"  Content="取消" HorizontalAlignment="Left" Margin="30,15,0,0" VerticalAlignment="Top"  Width="90" Height="26"  PreviewMouseLeftButtonUp="incModalCancel_PreviewMouseLeftButtonUp">
                            <Button.Template>
                                <ControlTemplate TargetType="{x:Type Button}">
                                    <Border BorderBrush="{TemplateBinding Control.BorderBrush}" BorderThickness="0" CornerRadius="6,6,6,6" Name="PART_Background">
                                        <Border.Background>
                                            <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                                                <GradientStop Color="#FF006BB9"  />
                                                <GradientStop Color="#006AB9"  />
                                            </LinearGradientBrush>
    
                                        </Border.Background>
                                        <ContentPresenter Content="{TemplateBinding ContentControl.Content}" HorizontalAlignment="Center" VerticalAlignment="Center" />
                                    </Border>
                                </ControlTemplate>
                            </Button.Template>
                        </Button>
                    </Grid>
                </Grid>
            </Border>
    xaml

       2.cs后端的控制

     incConfirmedModalBox.Visibility = Visibility.Visible;

      3.业务代码就不做展示了,就是把此控件放到xaml末尾,根据Grid布局定位到页面中间,控制它展示隐藏即可,他们确定取消按钮正常调用后台逻辑代码即可,调用完成之后将incConfirmeDModalBox隐藏,维护关联逻辑

    备注

      本来这块想要讲很多的,但是涉及到没有准备现成的Demo,之前编写的业务不便公开,草草收尾了,下次重新补上一份

  • 相关阅读:
    delphi 获取图片某一像素的颜色值
    delphi常用快捷键(我自己经常使用的)
    115.css的initial、inherit、unset
    菜鸡前端的配色记录-echart比较好看的配色
    114.关于前端的vertical-align详解
    Problem
    Oracle从入门到入门的学习历程
    使用navicat连接oracleXE
    使用ElementUI遭遇问题记录
    SonarQube遇见的问题
  • 原文地址:https://www.cnblogs.com/DawnCHENXI/p/10478974.html
Copyright © 2011-2022 走看看