2017-11-28 3 views
0

Wie kann ich die QuickInfo als eine Liste von Werten anzeigen, die an eine der Spalten eines Gitters mit einem durch Komma getrennten Zeichenfolgenwert in WPF gebunden sind. Ich kann es an eine Spalte binden, die kommagetrennte Werte anzeigt.Wpf - Binden von Tooltip an eine Spalte mit durch Komma getrennten Werten zur Anzeige als Liste

<ctl:FieldHelp.Columns> 
      <data:DataGridTextColumn Binding="{Binding ID, Mode=TwoWay}" IsReadOnly="True"> 
       <data:DataGridTextColumn.CellStyle> 
        <Style TargetType="data:DataGridCell" > 
         <Setter Property="ToolTipService.ToolTip" Value="{Binding Details}"></Setter> 
        </Style> 
       </data:DataGridTextColumn.CellStyle> 
      </data:DataGridTextColumn> 
      <data:DataGridTextColumn Binding="{Binding Name, Mode=TwoWay}" IsReadOnly="True"/> 
      <data:DataGridTextColumn Binding="{Binding Description, Mode=TwoWay}" IsReadOnly="True"/> 

+0

Teil des Codes Anzeige ist der beste Weg –

+0

eine gute Antwort haben Klingt wie Sie brauchen einen Wertkonverter verwenden. Sie können die QuickInfo an die Spalte binden, aber es wird die durch Kommas getrennte Zeichenfolge angezeigt, und Sie möchten, dass die Werte als Liste angezeigt werden. Mit einem Wertkonverter können Sie das Komma durch ein Zeilenumbruchzeichen ersetzen \ n – ooorndtski

+0

ja @ooomdtski, Aber ich habe keine Idee, wie man den Konverter benutzt? –

Antwort

0

Hier wie ein Konverter verwenden:

Änderung:

Value="{Binding Details}" =>Value="{Binding Details, Converter={StaticResource CommaStringConverter}}"

Erstellen Sie Ihren Konverter

public class CommaStringConverter : BaseConverter, IValueConverter 
    { 
     public object Convert(object value, Type targetType, 
           object parameter, CultureInfo culture) 
     { 
      return string.Join("\n", value.Split(',')); 
     } 

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

    } 

Fügen Sie es Ihrer app.xaml Datei

<Application 
      ..... 
      xmlns:converters="clr-namespace:YourAppNameSpace.YourConvertersFolder" 
      ...... > 
    <Application.Resources> 

     <converters:CommaStringConverter x:Key="CommaStringConverter " /> 

     ........... 
    </Application.Resources> 
</Application> 
1

Wert Konverter. Sie müssen eine Klasse erstellen, die die IValueConverter-Schnittstelle implementiert.

public class TooltipStringListConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     // Process your comma seperated string here 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     // You can leave this empty 
    } 
} 

In XAML Änderung

<Setter Property="ToolTipService.ToolTip" Value="{Binding Details}"></Setter> 

Um dies:

<Setter Property="ToolTipService.ToolTip" Value="{Binding Details, Converter={StaticResource TooltipStringListConverter}}"></Setter> 

Seien Sie sicher, dass Sie den richtigen Namensraum des Wandlers verwendet werden. Ich habe es nicht getestet, aber ich bin sicher, das ist der Weg zu gehen.

Edit:

Ich habe vergessen, die den Konverter in der XAML sind wie Celso Livero von tat Zugabe

<Window ... 
    xmlns:converters="clr-namespace:NamespaceOfYourConverter" 
> 

<Window.Resources> 
    <converters:TooltipStringListConverter x:Key="TooltipStringListConverter"/> 
</Window.Resources> 
Verwandte Themen