2016-06-13 112 views
-1

我正在使用WPF創建聊天應用程序。將短信添加到在運行時創建的的Rich文本框中,並將這些框添加到堆棧面板。圍繞文本範圍的邊框

我需要有不同顏色的邊框來自不同用戶的消息。

如何在運行時圍繞這些消息設置邊界?

+0

創建一個具有Color屬性的User類,創建一個引用User的Message類並使用Message.User.Color設置Border.BorderBrush – nkoniishvt

回答

0

您可以使用邊框():)即:

Border b = new Border() 
{ 
    BorderBrush = new SolidColorBrush(Color.FromArgb(0xFF, 0x80, 0x80, 0x80)), 
    BorderThickness = new Thickness(1, 0, 1, 2), 
    CornerRadius = new CornerRadius(1, 1, 1, 5) 
}; 

你可以讓你的StackPanel作爲一個佔位符,並在運行時添加到它。 sp.Children.Add(b);

編輯:一個例子:如果你想邊框顏色添加到你寫下面的一個按鈕

void Main() 
{ 
    StackPanel sp = new StackPanel(); 
    for (int i = 0; i < 10; i++) 
    { 
     Border b = new Border() 
     { 
      BorderBrush = new SolidColorBrush(
      i % 2 == 0 
      ? Color.FromArgb(0xFF, 0x80, 0x80, 0x80) 
      : Color.FromArgb(0xFF, 0xFF, 0x0, 0x0) 
      ), 
      BorderThickness = new Thickness(1, 0, 1, 2), 
      CornerRadius = new CornerRadius(1, 1, 1, 5), 
      Child = new RichTextBox() 
     }; 
     sp.Children.Add(b); 
    } 

    new Window { Content = sp }.ShowDialog(); 
    Dispatcher.CurrentDispatcher.InvokeShutdown(); 
} 
+0

謝謝Cetin,但這不起作用,我不知道爲什麼。這根本不顯示邊框。 :( – Teeloo

+0

其實我在發送之前已經在Linqpad上試了一下,它對我有用(添加了命名空間),而且我也在現實世界的Silverlight應用程序中使用了相同的代碼,稍作修改 –

+0

可能我已經全部了錯誤。謝謝你的幫助! – Teeloo

0

您可以使用邊框刷屬性,有邊界的任何控件還具有以下屬性,例如:

myButton.BorderBrush = new SolidColorBrush(Color.FromArgb(a: 255, r: 204, g: 204, b: 204)); 

我希望這可以解決您的問題。

+0

謝謝Fadl。但是我正在尋找一種只在文本週圍有邊框的方法,並且字符串沒有邊界刷屬性。 – Teeloo