我們知道在一個限定高的窗體和容器中,想要把內容顯示完是有些問題的,這個時候我們就要使用類似於瀏覽器的那個滾動條的效果了,在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(); }
效果如下: