web-dev-qa-db-fra.com

Convertisseurs IValue WPF intégrés

Ok, c'était une belle surprise (après l'avoir écrit plusieurs fois) de constater qu'il y a déjà un BooleanToVisibilityConverter in System.Windows.Controls espace de noms.

Il y a probablement plus de tels gains de temps cachés.

Quelqu'un en a?

80
cz_dl

J'ai fait un chalutage rapide en utilisant l'Explorateur d'objets et c'est ce que j'ai.

Dérivé de IValueConverter:

System.Windows.Controls.AlternationConverter
System.Windows.Controls.BooleanToVisibilityConverter
System.Windows.Documents.ZoomPercentageConverter
System.Windows.Navigation.JournalEntryListConverter

Xceed.Wpf.DataGrid.Converters.CurrencyConverter
Xceed.Wpf.DataGrid.Converters.DateTimeToStringConverter
Xceed.Wpf.DataGrid.Converters.GreaterThanZeroConverter
Xceed.Wpf.DataGrid.Converters.IndexToOddConverter
Xceed.Wpf.DataGrid.Converters.IntAdditionConverter
Xceed.Wpf.DataGrid.Converters.InverseBooleanConverter
Xceed.Wpf.DataGrid.Converters.LevelToOpacityConverter
Xceed.Wpf.DataGrid.Converters.MultimodalResultConverter
Xceed.Wpf.DataGrid.Converters.NegativeDoubleConverter
Xceed.Wpf.DataGrid.Converters.NullToBooleanConverter
Xceed.Wpf.DataGrid.Converters.SourceDataConverter
Xceed.Wpf.DataGrid.Converters.StringFormatConverter
Xceed.Wpf.DataGrid.Converters.ThicknessConverter
Xceed.Wpf.DataGrid.Converters.TypeToBooleanConverter
Xceed.Wpf.DataGrid.Converters.TypeToVisibilityConverter
Xceed.Wpf.DataGrid.Converters.ValueToMaskedTextConverter

Dérivé de IMultiValueConverter:

System.Windows.Controls.BorderGapMaskConverter
System.Windows.Navigation.JournalEntryUnifiedViewConverter
System.Windows.Controls.MenuScrollingVisibilityConverter

Microsoft.Windows.Themes.ProgressBarBrushConverter
Microsoft.Windows.Themes.ProgressBarHighlightConverter

Notez que les Xceed (sans connexion) sont disponibles gratuitement avec leur DataGrid. En plus de ceux-là, il y a des trucs intelligents comme le convertisseur de débogage . J'ai également utilisé le dernier IValueConverter et je suis sûr qu'il y a aussi d'autres qualités de la fonction lambda à trouver.

93
MrTelly

Avant 3.5 SP1, un IValueConverter était requis pour le formatage des chaînes. Maintenant, vous pouvez utiliser la propriété StringFormat sur Binding pour ce faire.

Depuis la page MSDN:

<DataTemplate>
  <TextBlock>
    <TextBlock.Text>
      <MultiBinding  StringFormat="{}{0} -- Now only {1:C}!">
        <Binding Path="Description"/>
        <Binding Path="Price"/>
      </MultiBinding>
    </TextBlock.Text>
  </TextBlock>
</DataTemplate>
26
Robert Macnee