C# XAML中类似控制台的消息框
如何在WPF中创建类似的内容?我可以在一个框中显示文字信息,较旧的信息会移向顶部而不是消失。有点像聊天。C# XAML中类似控制台的消息框,c#,wpf,visual-studio,xaml,C#,Wpf,Visual Studio,Xaml,如何在WPF中创建类似的内容?我可以在一个框中显示文字信息,较旧的信息会移向顶部而不是消失。有点像聊天。 它不需要与滚动条花哨,我只需要一个消息框,有能力显示多个文字信息。创建消息的时间很方便,但不是必需的。您可以将windows用作对话框,并从该对话框将消息绑定到listview。我制作了一个示例应用程序,向您演示了如何做到这一点。这只是一个示例,向您展示非常基本的消息传递应用程序。请勿在生产中使用此功能 主窗口示例: <Window x:Class="Messaging.MainWin
它不需要与滚动条花哨,我只需要一个消息框,有能力显示多个文字信息。创建消息的时间很方便,但不是必需的。您可以将windows用作对话框,并从该对话框将消息绑定到listview。我制作了一个示例应用程序,向您演示了如何做到这一点。这只是一个示例,向您展示非常基本的消息传递应用程序。请勿在生产中使用此功能 主窗口示例:
<Window x:Class="Messaging.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Messaging"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBox Name="txtMessage" Width="200" Height="50" Margin="10" />
<Button Name="btnSubmit" Content="submit" Width="200" Height="50" Click="btnSubmit_Click" />
</StackPanel>
</Grid>
</Window>
我希望这会有所帮助。我通常只使用
消息的可观察收集
,我将项控件绑定到这些对象<代码>消息
具有时间
和文本
属性。该模板仅绑定到消息
的属性2TextBlock
。根据需要向集合中添加项,其余的由绑定处理。
using System;
using System.Windows;
namespace Messaging
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
MessageStorage.Messages = new System.Collections.ObjectModel.ObservableCollection<Message>();
}
private void btnSubmit_Click(object sender, RoutedEventArgs e)
{
Message message = new Message();
message.MessageContent = txtMessage.Text;
message.PublishDate = DateTime.Now;
MessageStorage.Messages.Add(message);
MessageDialog messageDialog = new MessageDialog(MessageStorage.Messages);
messageDialog.ShowDialog();
}
}
}
<Window x:Class="Messaging.MessageDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Messaging"
mc:Ignorable="d"
Title="MessageDialog" Height="300" Width="300">
<Grid>
<ListView Name="lvMessages">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding MessageContent}" Margin="0,10,10,0" />
<TextBlock Text="{Binding PublishDate}" Margin="0,10,10,0" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</Window>
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
namespace Messaging
{
/// <summary>
/// Interaction logic for MessageDialog.xaml
/// </summary>
public partial class MessageDialog : Window
{
public MessageDialog(ObservableCollection<Message> messages)
{
InitializeComponent();
lvMessages.ItemsSource = messages.OrderByDescending(m => m.PublishDate);
}
}
}
using System.Collections.ObjectModel;
namespace Messaging
{
public static class MessageStorage
{
public static ObservableCollection<Message> Messages { get; set; }
}
}
using System;
namespace Messaging
{
public class Message
{
public string MessageContent { get; set; }
public DateTime PublishDate { get; set; }
}
}