Просмотр исходного кода

textbox文字充满时,scroll会自动向下滚动

tanghai 14 лет назад
Родитель
Сommit
337f65ac71

+ 8 - 5
CSharp/Editor/Logical/LoginRealm.cs

@@ -4,6 +4,7 @@ using GalaSoft.MvvmLight.Threading;
 using System.Security.Cryptography;
 using System.Threading.Tasks;
 using System.Text;
+using GalaSoft.MvvmLight.Messaging;
 
 namespace Egametang
 {
@@ -44,28 +45,30 @@ namespace Egametang
 		{
 			byte[] opcodeBuffer = new byte[1] { (byte)RealmLoginState.AuthLoginPermit };
 			await stream.WriteAsync(opcodeBuffer, 0, opcodeBuffer.Length);
-
+			
 			string username = mainViewModel.Username;
 			username += new string(' ', 128 - username.Length);
 			byte[] usernameBuffer = System.Text.Encoding.Default.GetBytes(username);
 			await stream.WriteAsync(usernameBuffer, 0, usernameBuffer.Length);
-
+			
 			MD5 md5 = new MD5CryptoServiceProvider();
 			byte[] password = System.Text.Encoding.Default.GetBytes(mainViewModel.Password);
 			byte[] passMD5Buffer = md5.ComputeHash(password);
-
+			
 			string passMD5 = BitConverter.ToString(passMD5Buffer);
 			passMD5 = passMD5.Replace("-", "");
 			passMD5 = passMD5.ToLower();
 			App.Logger.Debug(string.Format("username: {0}, passMD5: {1}", username, passMD5));
-
+			
 			passMD5Buffer = System.Text.Encoding.Default.GetBytes(passMD5);
-			App.Logger.Debug("passMD5Buffer len: " + passMD5Buffer.Length.ToString());
 			await stream.WriteAsync(passMD5Buffer, 0, passMD5Buffer.Length);
 
 			await DispatcherHelper.UIDispatcher.InvokeAsync(new Action(() =>
 			{
 				mainViewModel.LoginInfo += "Login Permit!" + Environment.NewLine;
+
+				// 让textbox自动向下滚动
+				Messenger.Default.Send(new NotificationMessage("ScrollDown"));
 			}));
 		}
 	}

+ 2 - 1
CSharp/Editor/View/MainView.xaml

@@ -15,7 +15,8 @@
 				<TextBox Width="150" x:Name="tBPassword" Text="{Binding Password}" />
 				<Button Content="登录" HorizontalAlignment="Center" VerticalAlignment="Center" Command="{Binding LoginCmd}" />
 			</StackPanel>
-			<TextBox x:Name="tBInfo" Margin="10" Padding="1" Height="200" VerticalScrollBarVisibility="Visible" />
+			<TextBox x:Name="tBInfo" Margin="10" Padding="1" Height="200" VerticalScrollBarVisibility="Visible" 
+					 Text="{Binding LoginInfo}" />
 		</StackPanel>
 	</Grid>
 </UserControl>

+ 8 - 1
CSharp/Editor/View/MainView.xaml.cs

@@ -1,4 +1,5 @@
-using System.Windows.Controls;
+using GalaSoft.MvvmLight.Messaging;
+using System.Windows.Controls;
 
 namespace Egametang
 {
@@ -10,6 +11,12 @@ namespace Egametang
 		public MainView()
 		{
 			InitializeComponent();
+			Messenger.Default.Register<NotificationMessage>(this, TextBoxInfoScrollToEnd);
+		}
+
+		private void TextBoxInfoScrollToEnd(NotificationMessage msg)
+		{
+			tBInfo.ScrollToEnd();
 		}
 	}
 }