c# - 自定义消息弹出 WPF

标签 c# wpf

这实际上并没有描述我的意思,但我会尽力解释。我已经使用 C# 一年了,从未接触过 WPF。直到最近我才意识到它有多棒并开始使用它。我现在面临一个问题。

我想让用户知道密码/用户名不正确,所以我想让它更令人愉悦,而不是旧的 WinForms MessageBox。我考虑过创建一个网格,使应用程序的颜色变暗,然后我就可以在上面显示一些文本。但是 - 这怎么可能?...您是否有更好的想法来显示应用程序的消息(而不是弹出窗口)?谢谢。

最佳答案

您可以创建一个具有半透明背景(如#33000000)和 3 行网格以显示标题、消息和确定按钮的 UserControl,如下所示:

<UserControl x:Class="ApplicationNameSpace.MessageControl" ... >
    <Grid Background="#33000000" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <Grid HorizontalAlignment="Center" VerticalAlignment="Center" Background="#FFFFFF" MinHeight="100" MinWidth="200">
            <Grid.RowDefinitions>
                <RowDefinition Height="30"></RowDefinition>
                <RowDefinition Height="*"></RowDefinition>
                <RowDefinition Height="35"></RowDefinition>
            </Grid.RowDefinitions>
            <Grid Grid.Row="0" Background="#EEEEEE">
                <Label Content="Unable to Login" HorizontalAlignment="Center" VerticalAlignment="Center" />
            </Grid>
            <Grid Grid.Row="1" Margin="10,20">
                <TextBlock Text="Wrong username or password. Try again." HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
            </Grid>
            <Grid Grid.Row="2" Background="#EEEEEE">
                <Button Content="OK" Width="80" Height="25" />
            </Grid>
        </Grid>
    </Grid>
</UserControl>

要使用,您可以在窗口的末尾添加控件,并在需要显示时将可见性更改为可见。

<Window x:Class="ApplicationNameSpace.MainWindow"
        xmlns:local="clr-namespace:ApplicationNameSpace" ... >
    <Grid>
        ...
        <local:MessageControl Name="messageControl" Visibility="Collapsed" />
    </Grid>
</Window>

您还可以创建一个通用控件,将标题和消息内容传递给显示方法,例如 MessageBox 显示方法。您还可以在此方法的窗口中以编程方式添加用户控件元素。

MessageControl

关于c# - 自定义消息弹出 WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21568427/

相关文章:

c# - 从 Unity 打开 iOS 应用程序

c# - 运行linq命令时出现Unrecognized attribute 'name'错误

c# - 无效参数 - 继承的接口(interface)有效,但隐式转换则不然。是什么赋予了?

c# - Azure AD 获取错误的 token 版本

c# - WPF:使用随 'AddFontMemResourceEx' 安装的字体仅用于进程

c# - 在 Canvas 上显示 DrawingVisual

c# - 如何将行为移到单独的类中

c# - 如果 wpf 应用程序没有响应,则自动重启

wpf - 我的 byte[] 到 WPF BitmapImage 的转换出错?

c# - 无法将类型 'object' 隐式转换为 'Microsoft.Office.Interop.Excel.Range'