Bạn có thể tạo và phơi bày chuyển đổi của bạn thông qua một tùy chỉnh MarkupExtension
mà sẽ cung cấp cho bạn khai báo inline bạn đang tìm kiếm:
public class BooleanToVisibilityConverterExtension : MarkupExtension, IValueConverter
{
private BooleanToVisibilityConverter converter;
public BooleanToVisibilityCoverterExtension() : base()
{
this.converter = new BooleanToVisibilityConverter();
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return this.converter.Convert(value, targetType, parameter, culture);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return this.converter.ConvertBack(value, targetType, parameter, culture);
}
}
Bây giờ bạn có thể sử dụng inline MarkupExtension để tạo ra một công cụ chuyển đổi mới:
<Button Visibility="{Binding Converter={local:BooleanToVisibilityConverter} ...}" .. />
và trong khi tôi không hiển thị nó trong ví dụ của tôi, bạn có thể muốn làm cho bộ chuyển đổi nội bộ tĩnh để mỗi phần mở rộng không tạo ra một thể hiện mới của bộ chuyển đổi nội bộ – sellmeadog
Cool! Kết hợp với cú pháp thông số constructor 'ValueConverter' và markup chung (để chuyển cho ví dụ đối số boolean NOT), nó sẽ là giải pháp rất hay. –
Poma