2017-11-28 5 views
0

WPFでコンマで区切られた文字列値を持つグリッドの列にバインドされた値のリストとしてツールチップを表示する方法。 カンマ区切りの値を表示している列にバインドできます。Wpf-バインドされた値をコンマで区切ったリストに表示するようにコンマで区切られたカラムにツールチップをバインドする

<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

を追加することで行ったようにXAMLでコンバータを含ん忘れては良い答え –

+0

を持っている最良の方法はサウンズれます値コンバータを使用する。ツールヒントを列にバインドすることはできますが、カンマで区切られた値の文字列が表示されていて、その値をリストとして表示する必要があります。値コンバーターを使用すると、コンマを改行文字で置き換えることができます。\ n – ooorndtski

+0

はい@ooomdtskiですが、コンバーターの使用方法はわかりません。 –

答えて

0

、コンバータを使用する方法:

変更:

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

あなたのコンバータを作成

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(); 
     } 

    } 

はあなたのapp.xamlファイル

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

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

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

値コンバータを使用するために、それを追加します。あなたはIValueConverterインターフェイスを実装するクラスを作成しています。

これに
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 
    } 
} 
あなたのXAMLの変更で

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

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

あなたは、コンバータの正しい名前空間を使用していることを確認してください。 私はそれをテストしていないが、私はこれが行く方法だと確信しています。

編集:あなたが必要とするように

私はセルソLiveroはあなたのコードの一部を表示する

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

<Window.Resources> 
    <converters:TooltipStringListConverter x:Key="TooltipStringListConverter"/> 
</Window.Resources> 
関連する問題