2015-01-21 3 views
0

SSH 클라이언트의 OUtput이 Results ObservableCollection에 추가됩니다. listview에 정보가 표시됩니다.ObservableCollection <string> 바인드 텍스트 상자 (스크롤 가능) wpf C#

스크롤 가능한 읽기 전용 텍스트 상자를 바인딩하여 컬렉션의 모든 것을 나열하려면 어떻게합니까? 그 어떤 도움의 경우

<!--<ListView ItemsSource="{Binding Results}" Grid.Row="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="15"> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn Header="Result" DisplayMemberBinding="{Binding}"/> 
       </GridView> 
      </ListView.View> 
     </ListView>--> 

나는 이미 변환이

public class JoinStringsConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     var strings = value as IEnumerable<string>; 
     return string.Join(Environment.NewLine, strings); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotSupportedException(); 
    } 
} 
+0

텍스트 상자 요소 Paparazzi

+0

그 다음 용액은? – Hairydruidy

+0

또한 변환기가 초기화시 트리거되지만 새로운 문자열이 추가되지는 않는지 알고 싶을 수 있습니다. – Hairydruidy

답변

1

변환기

public class ObservableStringCollectionToMultiLineStringConverter : IMultiValueConverter 
{ 
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
    { 
     ObservableCollection<string> logEntries = values[0] as ObservableCollection<string>; 
     StringBuilder sb = new StringBuilder(); 
     if (logEntries != null && logEntries.Count > 0) 
     { 

      foreach (string msg in logEntries) 
      { 
       sb.AppendLine(msg); 
      } 

      return sb.ToString(); 
     } 
     else 
      return String.Empty; 
    } 

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

그 컨버터는 ObservableCollection에 작동하지 않을

<GroupBox Header="Log" Grid.Row="4" Margin="0,10,0,0"> 
     <TextBox Style="{StaticResource SelectableTextBlockLikeStyle}" VerticalScrollBarVisibility="Auto" ap:TextBoxUtilities.AlwaysScrollToEnd="True" AcceptsReturn="True"> 
      <TextBox.Text> 
       <MultiBinding Converter="{StaticResource ObservableStringCollectionToMultiLineStringConverter}"> 
        <Binding Path="IncomingMessages" Mode="OneWay"/> 
        <Binding Path="IncomingMessages.Count" Mode="OneWay" /> 
       </MultiBinding> 
      </TextBox.Text> 
     </TextBox> 
    </GroupBox>