我们知道在一个限定高的窗体和容器中,想要把内容显示完是有些问题的,这个时候我们就要使用类似于浏览器的那个滚动条的效果了,在wpf中也同样如此,最近就碰到了这样的问题,也纠结了很长时间,调试滚动效果的时候一直出不来,还好现在调试好了,把代码贴出来
xaml:
<StackPanel> <ScrollViewer Name="scroll" Margin="0,50" Width="720" Height="200" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" > <TextBlock Name="OldMessage" Foreground="White" Margin="20,10" /> </ScrollViewer> </StackPanel>
cs
/// <summary> /// 窗体加载时 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void UserControl_Loaded(object sender, RoutedEventArgs e) { //获取私信信息 message = webMessage.GetModelById(PassData.Id); StringBuilder strMessage = new StringBuilder(); if (message!=null) { strMessage.Append("<Bold FontSize='20'>发件人</Bold>:" + message.SendUserBase.UserName + "\r\n"); strMessage.Append("接收人:" + message.ToUserBase.UserName + "\r\n"); strMessage.Append("私信标题:" + message.Tile + "\r\n"); strMessage.Append("发送时间:" + message.AddTime.ToString() + "\r\n"); strMessage.Append("发送内容:" + message.Contents + "\r\n\n"); } if (message.SendUser == PassData.CurrentUserId) { btnRvMessage.Visibility = Visibility.Collapsed; } else { btnRvMessage.Visibility = Visibility.Visible; } //显示原始的私信 string rvMessage = message.RvMessage; if (rvMessage != null && rvMessage != "") { string[] messageID = rvMessage.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); strMessage.Append("---原始文件--\r"); foreach (string itemID in messageID) { AllMessage model = webMessage.GetModelById(itemID); //OldMessage.Height += 150; strMessage.Append("<Bold FontSize='20'>发件人</Bold>:" + model.SendUserBase.UserName + "\r\n\n"); strMessage.Append("收件人:" + model.ToUserBase.UserName + "\r\n\n"); strMessage.Append("发送时间:" + model.AddTime + "\r\n\n"); strMessage.Append("主题:" + model.Tile + "\r\n\n"); strMessage.Append("内容:" + model.Contents + "\r\n\n\n"); } } OldMessage.Text = strMessage.ToString(); }
效果如下: