优化消息处理与界面翻译
在 `ChatDataModel.cs` 中添加了控件引用并重命名消息类型属性。 在 `TrayIconManager.cs` 中将菜单项文本翻译为中文并注释掉部分代码。 调整 `LoginWindow.xaml` 的窗口尺寸。 在 `MainWindow.xaml` 中添加了 `x:Name` 属性和数据触发器,改善了用户体验。 在 `MainWindow.xaml.cs` 中添加了用户登录时的欢迎消息逻辑,并统一了消息类型属性名称。
This commit is contained in:
parent
15147b88a6
commit
f4de02ec38
@ -6,6 +6,8 @@ using System.Threading.Tasks;
|
||||
using System.Windows.Media;
|
||||
using System.Windows;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace chatclient.Data
|
||||
{
|
||||
@ -21,7 +23,7 @@ namespace chatclient.Data
|
||||
/// <summary>
|
||||
/// 消息类型(文本、图片、文件、系统消息等)
|
||||
/// </summary>
|
||||
public required MessageType Type { get; set; } = MessageType.Text;
|
||||
public required MessageType MsgType { get; set; } = MessageType.Text;
|
||||
/// <summary>
|
||||
/// 消息发送者的头像图片
|
||||
/// </summary>
|
||||
|
@ -51,13 +51,13 @@ namespace chatclient.Data
|
||||
};
|
||||
|
||||
// 添加菜单项
|
||||
contextMenu.Items.Add(CreateMenuItem("Open Application", PackIconKind.WindowRestore, OpenApp_Click));
|
||||
contextMenu.Items.Add(CreateMenuItem("Settings", PackIconKind.Cog, Settings_Click));
|
||||
contextMenu.Items.Add(CreateMenuItem("打开程序", PackIconKind.WindowRestore, OpenApp_Click));
|
||||
contextMenu.Items.Add(CreateMenuItem("设置", PackIconKind.Cog, Settings_Click));
|
||||
contextMenu.Items.Add(new Separator { Style = (Style)Application.Current.Resources["MaterialDesignLightSeparator"] });
|
||||
contextMenu.Items.Add(CreateMenuItem("Check for Updates", PackIconKind.Update, Updates_Click));
|
||||
contextMenu.Items.Add(CreateMenuItem("Help", PackIconKind.HelpCircle, Help_Click));
|
||||
contextMenu.Items.Add(new Separator { Style = (Style)Application.Current.Resources["MaterialDesignLightSeparator"] });
|
||||
contextMenu.Items.Add(CreateMenuItem("Exit", PackIconKind.Power, Exit_Click));
|
||||
//contextMenu.Items.Add(CreateMenuItem("Check for Updates", PackIconKind.Update, Updates_Click));
|
||||
//contextMenu.Items.Add(CreateMenuItem("Help", PackIconKind.HelpCircle, Help_Click));
|
||||
//contextMenu.Items.Add(new Separator { Style = (Style)Application.Current.Resources["MaterialDesignLightSeparator"] });
|
||||
contextMenu.Items.Add(CreateMenuItem("退出", PackIconKind.Power, Exit_Click));
|
||||
|
||||
return contextMenu;
|
||||
}
|
||||
@ -109,7 +109,6 @@ namespace chatclient.Data
|
||||
|
||||
private void Exit_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// 释放托盘图标资源
|
||||
Dispose();
|
||||
Application.Current.Shutdown();
|
||||
}
|
||||
|
@ -7,7 +7,7 @@
|
||||
xmlns:local="clr-namespace:chatclient"
|
||||
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls" x:Class="chatclient.LoginWindow"
|
||||
mc:Ignorable="d"
|
||||
Title="LoginWindow" Height="590" Width="360" MinHeight="590" MinWidth="360" MaxHeight="590" MaxWidth="360"
|
||||
Title="LoginWindow" Height="590" Width="330" MinHeight="590" MinWidth="330" MaxHeight="590" MaxWidth="330"
|
||||
ResizeMode="NoResize" Closing="Window_Closing">
|
||||
|
||||
<TabControl>
|
||||
|
@ -80,9 +80,9 @@
|
||||
<!-- 消息卡片(始终在中间列) -->
|
||||
<materialDesign:Card Grid.Column="1" Padding="10" HorizontalAlignment="{Binding Alignment}">
|
||||
<StackPanel>
|
||||
<TextBlock Text="{Binding Sender}" FontWeight="Bold" Foreground="{Binding SenderColor}"/>
|
||||
<TextBlock Text="{Binding Content}" TextWrapping="Wrap" Margin="0,5,0,0"/>
|
||||
<TextBlock Text="{Binding Timestamp, StringFormat='HH:mm:ss'}" Foreground="Gray" FontSize="10" HorizontalAlignment="Right" Margin="0,5,0,0"/>
|
||||
<TextBlock Text="{Binding Sender}" x:Name="Sender" FontWeight="Bold" Foreground="{Binding SenderColor}"/>
|
||||
<TextBlock Text="{Binding Content}" TextWrapping="Wrap" Margin="0,5,0,0"/>
|
||||
<TextBlock Text="{Binding Timestamp, StringFormat='HH:mm:ss'}" x:Name="Timestamp" Foreground="Gray" FontSize="10" HorizontalAlignment="Right" Margin="0,5,0,0"/>
|
||||
</StackPanel>
|
||||
</materialDesign:Card>
|
||||
<!-- 右侧头像(仅当Alignment=Right时显示) -->
|
||||
@ -96,6 +96,12 @@
|
||||
</Grid>
|
||||
<!-- 根据Alignment显示正确的头像 -->
|
||||
<DataTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding MsgType}" Value="3">
|
||||
<Setter TargetName="Sender" Property="Visibility" Value="Collapsed"/>
|
||||
<Setter TargetName="Timestamp" Property="Visibility" Value="Collapsed"/>
|
||||
<Setter TargetName="leftAvatar" Property="Visibility" Value="Collapsed"/>
|
||||
<Setter TargetName="rightAvatar" Property="Visibility" Value="Collapsed"/>
|
||||
</DataTrigger>
|
||||
<!-- 左对齐消息:显示左侧头像 -->
|
||||
<DataTrigger Binding="{Binding Alignment}" Value="Left">
|
||||
<Setter TargetName="leftAvatar" Property="Visibility" Value="Visible"/>
|
||||
@ -119,7 +125,7 @@
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBox x:Name="txtMessage" Grid.Row="0" materialDesign:HintAssist.Hint="输入消息..." AcceptsReturn="True" VerticalScrollBarVisibility="Auto"
|
||||
TextWrapping="Wrap" MinHeight="50" MaxHeight="100" Margin="5" BorderBrush="#00000000"/>
|
||||
TextWrapping="Wrap" MinHeight="50" MaxHeight="100" Margin="5" BorderBrush="#00000000" CaretBrush="#00673AB7" SelectionBrush="#00B39DDB"/>
|
||||
<Button x:Name="btnSend" Grid.Row="1" Content="发送" MinWidth="80" Style="{StaticResource MaterialDesignRaisedButton}"
|
||||
Click="SendMessage_Click" Width="20" HorizontalAlignment="Right" Margin="2,2,4,4"/>
|
||||
</Grid>
|
||||
|
@ -149,6 +149,17 @@ namespace chatclient
|
||||
var loginWindow = Application.Current.Windows.OfType<LoginWindow>().FirstOrDefault();
|
||||
loginWindow?.Close();
|
||||
mainWindow.Activate();
|
||||
var chatmessage = new ChatMessage
|
||||
{
|
||||
Sender = "System",
|
||||
MsgType = MessageType.System,
|
||||
Image = new BitmapImage(new Uri("pack://application:,,,/resource/user.png")),
|
||||
Content = $"你好 {UserName} !",
|
||||
Timestamp = DateTime.Now,
|
||||
Alignment = HorizontalAlignment.Center,
|
||||
SenderColor = new SolidColorBrush(Colors.Gray)
|
||||
};
|
||||
mainWindow?.Messages.Add(chatmessage);
|
||||
}
|
||||
});
|
||||
log.Info($"用户 {UserName} 登录成功(token:{token})");
|
||||
@ -190,7 +201,7 @@ namespace chatclient
|
||||
var chatmessage = new ChatMessage
|
||||
{
|
||||
Sender = chat.user ?? "未知用户",
|
||||
Type = MessageType.Text,
|
||||
MsgType = MessageType.Text,
|
||||
Image = new BitmapImage(new Uri(chat.image ?? "pack://application:,,,/resource/user.png", UriKind.Absolute)),
|
||||
Content = chat.message ?? "(无内容)",
|
||||
Timestamp = DateTime.Now,
|
||||
@ -205,7 +216,7 @@ namespace chatclient
|
||||
var chatmessage = new ChatMessage
|
||||
{
|
||||
Sender = chat.user ?? "未知用户",
|
||||
Type = MessageType.Text,
|
||||
MsgType = MessageType.Text,
|
||||
Image = new BitmapImage(new Uri(chat.image ?? "pack://application:,,,/resource/user.png", UriKind.Absolute)),
|
||||
Content = chat.message ?? "(无内容)",
|
||||
Timestamp = chat.timestamp,
|
||||
@ -215,7 +226,6 @@ namespace chatclient
|
||||
var mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
|
||||
mainWindow?.Messages.Add(chatmessage);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
else
|
||||
|
Loading…
x
Reference in New Issue
Block a user