这实际上并没有描述我的意思,但我会尝试解释。我已经使用C#一年了,从未接触过WPF。直到最近我才意识到它是多么棒,并开始使用它。我现在面临一个问题。
我想让用户知道密码/用户名是不正确的,所以不要使用旧的WinForms MessageBox,而是想让它变得更好。我想创建一个网格,使应用程序的颜色更暗,然后我就可以在其上显示一些文本。但是 - 这怎么可能?...你有没有更好的想法来显示应用程序的消息(不是弹出窗口)?感谢。
答案 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方法。您还可以在此方法的窗口中以编程方式添加用户控件元素。
答案 1 :(得分:1)
您可以使用WPF 4.5上的验证和INotifyDataError,您可以在文本框旁边显示一条好消息check this link for example