Wbudowane IValueConverters WPF

85

Ok, miłą niespodzianką (po kilkukrotnym napisaniu tego tekstu ) było stwierdzenie, że w przestrzeni nazw System.Windows.Controls istnieje już BooleanToVisibilityConverter .

Prawdopodobnie jest więcej takich ukrytych oszczędzaczy czasu.

Czy ktoś ma jakieś?

cz_dl
źródło

Odpowiedzi:

99

Zrobiłem szybkie przeszukanie za pomocą przeglądarki obiektów i oto, co mam.

Pochodzi z 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

Pochodzi z IMultiValueConverter:

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

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

Zauważ, że te Xceed (bez połączenia) są dostępne bezpłatnie z ich DataGrid. Oprócz tych istnieje kilka sprytnych rzeczy, takich jak konwerter debugowania . Użyłem również ostatniego IValueConverter i jestem pewien, że można znaleźć również inne zalety funkcji lambda.

MrTelly
źródło
3
Mam nadzieję, że nie masz nic przeciwko - po prostu zredagowałem to, sortując wyniki. Miło widzieć, co jest wbudowane, a co specyficzne dla Xceed.
Eddie Parker
1
Zastanawiam się, które z nich są nadal dostępne na platformie Universal Windows do tworzenia aplikacji uniwersalnych systemu Windows 10?
Alex Vang
1
W witrynie MSDN sekcja Informacje o wersji zawiera tylko „.NET Framework - dostępny od 3.0” dla wszystkich konwerterów firmy Microsoft. Wygląda na to, że uniwersalna platforma Windows nie jest obsługiwana, @AHelloWorldDev. (Np. Tablica System.Array stwierdza, że ​​obsługa UWP jest wyraźnie
widoczna
28

Przed 3.5 SP1, IValueConverter był wymagany do formatowania ciągu. Teraz możesz użyć właściwości StringFormat w Binding, aby to zrobić.

Ze strony MSDN:

<DataTemplate>
  <TextBlock>
    <TextBlock.Text>
      <MultiBinding  StringFormat="{}{0} -- Now only {1:C}!">
        <Binding Path="Description"/>
        <Binding Path="Price"/>
      </MultiBinding>
    </TextBlock.Text>
  </TextBlock>
</DataTemplate>
Robert Macnee
źródło
Zobacz tę linię, aby zobaczyć więcej przykładów: blogs.msdn.com/llobo/archive/2008/05/19/…
Ashley Davis
Zobacz także ten msdn.microsoft.com/en-us/library/…
Tom A,