2016-06-13 122 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