设置ScrollViewer.VerticalScrollBarVisibility =“Auto”后,文本框ScrollBar未到来

时间:2013-08-01 14:48:24

标签: c# silverlight xaml

我有silverlight网络应用程序。我在子窗口中显示日志信息。儿童窗口包含一个文本框控件。我设置了ScrollViewer.VerticalScrollBarVisibility =“自动”但垂直滚动条没有显示出来。请帮助我。

XAML

<controls:ChildWindow x:Class="LogPopUpWindow"
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
       xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
       Width="600" Height="400" 
       Title="" HasCloseButton="False">
<Grid x:Name="LayoutRoot" Margin="2">
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <TextBox x:Name="LogEvents" IsReadOnly="True" ScrollViewer.HorizontalScrollBarVisibility="Disabled"
     ScrollViewer.VerticalScrollBarVisibility="Visible"></TextBox>
    <Button x:Name="CancelButton" Content="Cancel" Click="CancelButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,0,0" Grid.Row="1" />
</Grid>

C#

 public void RefreshLogs(string message = "")
    {
        StringBuilder text = new StringBuilder();
        if (string.IsNullOrEmpty(message))
        {
            if (Logger.GetLogs() != null)
            {
                Logger.GetLogs().ForEach(b =>
                {
                    text.AppendFormat("{2}{0}:  {1}{2}", b.UserTargetOperation, b.UserEventDate.ToString(), Environment.NewLine);
                    foreach (KeyValuePair<string, string> pair in b.Parameters)
                    {
                        text.AppendFormat("         {0} : {1}{2}", pair.Key, pair.Value, Environment.NewLine);
                    }
                });
            }

            LogEvents.Text = text.ToString();
        }
        else
        {
            LogEvents.Text = message;
            LogEvents.TextWrapping = TextWrapping.Wrap;
        }
    }

按钮处理程序编码器

private void ShowLogLink_Click(object sender, System.Windows.RoutedEventArgs e)
    {

        ///Logger.GetLogs();
        ///
        LogPopUpWindow win = new LogPopUpWindow();
        win.RefreshLogs();
        win.Show();
    }

2 个答案:

答案 0 :(得分:0)

我会把它放在评论中,但我没有足够的代表。我试图重现您所描述的错误,即垂直滚动条没有显示,但是当我用文本框填充的文本高于其高度时,滚动条会显示。

是否有其他影响您问题的部分未列出?

答案 1 :(得分:0)

问题已解决。我在代码中添加了垂直滚动属性,它正在运行。

public void RefreshLogs(string message = "")
    {
        StringBuilder text = new StringBuilder();
        if (string.IsNullOrEmpty(message))
        {
            if (Logger.GetLogs() != null)
            {
                Logger.GetLogs().ForEach(b =>
                {
                    text.AppendFormat("{2}{0}:  {1}{2}", b.UserTargetOperation, b.UserEventDate.ToString(), Environment.NewLine);
                    foreach (KeyValuePair<string, string> pair in b.Parameters)
                    {
                        text.AppendFormat("         {0} : {1}{2}", pair.Key, pair.Value, Environment.NewLine);
                    }
                });
            }

            LogEvents.VerticalScrollBarVisibility = ScrollBarVisibility.Auto; // added
            LogEvents.Text = text.ToString();
        }
        else
        {
            **LogEvents.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;** // added
            LogEvents.Text = message;
            LogEvents.TextWrapping = TextWrapping.Wrap;
        }
    }
}