优化消息处理与界面翻译
在 `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.Media;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Media.Imaging;
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Input;
|
||||||
|
|
||||||
namespace chatclient.Data
|
namespace chatclient.Data
|
||||||
{
|
{
|
||||||
@ -21,7 +23,7 @@ namespace chatclient.Data
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 消息类型(文本、图片、文件、系统消息等)
|
/// 消息类型(文本、图片、文件、系统消息等)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public required MessageType Type { get; set; } = MessageType.Text;
|
public required MessageType MsgType { get; set; } = MessageType.Text;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 消息发送者的头像图片
|
/// 消息发送者的头像图片
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -51,13 +51,13 @@ namespace chatclient.Data
|
|||||||
};
|
};
|
||||||
|
|
||||||
// 添加菜单项
|
// 添加菜单项
|
||||||
contextMenu.Items.Add(CreateMenuItem("Open Application", PackIconKind.WindowRestore, OpenApp_Click));
|
contextMenu.Items.Add(CreateMenuItem("打开程序", PackIconKind.WindowRestore, OpenApp_Click));
|
||||||
contextMenu.Items.Add(CreateMenuItem("Settings", PackIconKind.Cog, Settings_Click));
|
contextMenu.Items.Add(CreateMenuItem("设置", PackIconKind.Cog, Settings_Click));
|
||||||
contextMenu.Items.Add(new Separator { Style = (Style)Application.Current.Resources["MaterialDesignLightSeparator"] });
|
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("Check for Updates", PackIconKind.Update, Updates_Click));
|
||||||
contextMenu.Items.Add(CreateMenuItem("Help", PackIconKind.HelpCircle, Help_Click));
|
//contextMenu.Items.Add(CreateMenuItem("Help", PackIconKind.HelpCircle, Help_Click));
|
||||||
contextMenu.Items.Add(new Separator { Style = (Style)Application.Current.Resources["MaterialDesignLightSeparator"] });
|
//contextMenu.Items.Add(new Separator { Style = (Style)Application.Current.Resources["MaterialDesignLightSeparator"] });
|
||||||
contextMenu.Items.Add(CreateMenuItem("Exit", PackIconKind.Power, Exit_Click));
|
contextMenu.Items.Add(CreateMenuItem("退出", PackIconKind.Power, Exit_Click));
|
||||||
|
|
||||||
return contextMenu;
|
return contextMenu;
|
||||||
}
|
}
|
||||||
@ -109,7 +109,6 @@ namespace chatclient.Data
|
|||||||
|
|
||||||
private void Exit_Click(object sender, RoutedEventArgs e)
|
private void Exit_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
// 释放托盘图标资源
|
|
||||||
Dispose();
|
Dispose();
|
||||||
Application.Current.Shutdown();
|
Application.Current.Shutdown();
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
xmlns:local="clr-namespace:chatclient"
|
xmlns:local="clr-namespace:chatclient"
|
||||||
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls" x:Class="chatclient.LoginWindow"
|
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls" x:Class="chatclient.LoginWindow"
|
||||||
mc:Ignorable="d"
|
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">
|
ResizeMode="NoResize" Closing="Window_Closing">
|
||||||
|
|
||||||
<TabControl>
|
<TabControl>
|
||||||
|
@ -80,9 +80,9 @@
|
|||||||
<!-- 消息卡片(始终在中间列) -->
|
<!-- 消息卡片(始终在中间列) -->
|
||||||
<materialDesign:Card Grid.Column="1" Padding="10" HorizontalAlignment="{Binding Alignment}">
|
<materialDesign:Card Grid.Column="1" Padding="10" HorizontalAlignment="{Binding Alignment}">
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<TextBlock Text="{Binding Sender}" FontWeight="Bold" Foreground="{Binding SenderColor}"/>
|
<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 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 Timestamp, StringFormat='HH:mm:ss'}" x:Name="Timestamp" Foreground="Gray" FontSize="10" HorizontalAlignment="Right" Margin="0,5,0,0"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</materialDesign:Card>
|
</materialDesign:Card>
|
||||||
<!-- 右侧头像(仅当Alignment=Right时显示) -->
|
<!-- 右侧头像(仅当Alignment=Right时显示) -->
|
||||||
@ -96,6 +96,12 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
<!-- 根据Alignment显示正确的头像 -->
|
<!-- 根据Alignment显示正确的头像 -->
|
||||||
<DataTemplate.Triggers>
|
<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">
|
<DataTrigger Binding="{Binding Alignment}" Value="Left">
|
||||||
<Setter TargetName="leftAvatar" Property="Visibility" Value="Visible"/>
|
<Setter TargetName="leftAvatar" Property="Visibility" Value="Visible"/>
|
||||||
@ -119,7 +125,7 @@
|
|||||||
<RowDefinition Height="Auto"/>
|
<RowDefinition Height="Auto"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<TextBox x:Name="txtMessage" Grid.Row="0" materialDesign:HintAssist.Hint="输入消息..." AcceptsReturn="True" VerticalScrollBarVisibility="Auto"
|
<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}"
|
<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"/>
|
Click="SendMessage_Click" Width="20" HorizontalAlignment="Right" Margin="2,2,4,4"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
@ -149,6 +149,17 @@ namespace chatclient
|
|||||||
var loginWindow = Application.Current.Windows.OfType<LoginWindow>().FirstOrDefault();
|
var loginWindow = Application.Current.Windows.OfType<LoginWindow>().FirstOrDefault();
|
||||||
loginWindow?.Close();
|
loginWindow?.Close();
|
||||||
mainWindow.Activate();
|
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})");
|
log.Info($"用户 {UserName} 登录成功(token:{token})");
|
||||||
@ -190,7 +201,7 @@ namespace chatclient
|
|||||||
var chatmessage = new ChatMessage
|
var chatmessage = new ChatMessage
|
||||||
{
|
{
|
||||||
Sender = chat.user ?? "未知用户",
|
Sender = chat.user ?? "未知用户",
|
||||||
Type = MessageType.Text,
|
MsgType = MessageType.Text,
|
||||||
Image = new BitmapImage(new Uri(chat.image ?? "pack://application:,,,/resource/user.png", UriKind.Absolute)),
|
Image = new BitmapImage(new Uri(chat.image ?? "pack://application:,,,/resource/user.png", UriKind.Absolute)),
|
||||||
Content = chat.message ?? "(无内容)",
|
Content = chat.message ?? "(无内容)",
|
||||||
Timestamp = DateTime.Now,
|
Timestamp = DateTime.Now,
|
||||||
@ -205,7 +216,7 @@ namespace chatclient
|
|||||||
var chatmessage = new ChatMessage
|
var chatmessage = new ChatMessage
|
||||||
{
|
{
|
||||||
Sender = chat.user ?? "未知用户",
|
Sender = chat.user ?? "未知用户",
|
||||||
Type = MessageType.Text,
|
MsgType = MessageType.Text,
|
||||||
Image = new BitmapImage(new Uri(chat.image ?? "pack://application:,,,/resource/user.png", UriKind.Absolute)),
|
Image = new BitmapImage(new Uri(chat.image ?? "pack://application:,,,/resource/user.png", UriKind.Absolute)),
|
||||||
Content = chat.message ?? "(无内容)",
|
Content = chat.message ?? "(无内容)",
|
||||||
Timestamp = chat.timestamp,
|
Timestamp = chat.timestamp,
|
||||||
@ -215,7 +226,6 @@ namespace chatclient
|
|||||||
var mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
|
var mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
|
||||||
mainWindow?.Messages.Add(chatmessage);
|
mainWindow?.Messages.Add(chatmessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user