Ok, thật bất ngờ (sau khi viết nhiều lần) khi thấy rằng đã có BooleanToVisibilityConverter trong không gian tên System.Windows.Controls .
Có lẽ có nhiều tiết kiệm thời gian ẩn như vậy.
Bất cứ ai có một số?
Câu trả lời:
Tôi đã lướt nhanh bằng Trình duyệt đối tượng và đây là những gì tôi có.
Bắt nguồn từ 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
Bắt nguồn từ IMultiValueConverter
:
System.Windows.Controls.BorderGapMaskConverter
System.Windows.Navigation.JournalEntryUnifiedViewConverter
System.Windows.Controls.MenuScrollingVisibilityConverter
Microsoft.Windows.Themes.ProgressBarBrushConverter
Microsoft.Windows.Themes.ProgressBarHighlightConverter
Lưu ý rằng những cái Xceed (không có kết nối) có sẵn miễn phí với DataGrid của họ. Cũng như những thứ đó, có một số công cụ thông minh xung quanh như trình chuyển đổi gỡ lỗi . Tôi cũng đã sử dụng IValueConverter cuối cùng và tôi chắc chắn rằng có một số chức năng lambda tốt hơn nữa sẽ được tìm thấy.
Trước 3.5 SP1, cần có IValueConverter để định dạng chuỗi. Bây giờ, bạn có thể sử dụng thuộc tính StringFormat trên Binding để thực hiện việc này.
Từ trang MSDN:
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} -- Now only {1:C}!">
<Binding Path="Description"/>
<Binding Path="Price"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>