自定义消息弹出窗口WPF

时间:2014-02-05 04:05:12

标签: c# wpf

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

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

2 个答案:

答案 0 :(得分:3)

您可以创建一个半透明背景的UserControl(如#33000000)和三行网格来显示标题,消息和OK按钮,如下所示:

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

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

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

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

MessageControl

答案 1 :(得分:1)

您可以使用WPF 4.5上的验证和INotifyDataError,您可以在文本框旁边显示一条好消息check this link for example