Đây là một cách tiếp cận khác trong đó bạn xác định tiện ích mở rộng đánh dấu của riêng mình trả về True
hoặc False
(hoặc bất kỳ giá trị nào khác mà bạn muốn). Sau đó, bạn chỉ cần sử dụng chúng ngay trong XAML giống như bất kỳ tiện ích mở rộng đánh dấu nào khác:
public class TrueExtension : MarkupExtension {
public override object ProvideValue(IServiceProvider serviceProvider) => true;
}
public class FalseExtension : MarkupExtension {
public override object ProvideValue(IServiceProvider serviceProvider) => false;
}
public class DoubleExtension : MarkupExtension {
public DoubleExtension(){};
public DoubleExtension(double value) => Value = value;
public double Value { get; set; }
public override object ProvideValue(IServiceProvider serviceProvider) => Value;
}
Sau đó, bạn sử dụng chúng như thế này (giả sử không gian tên đã nhập của bạn là mx
):
<KeyBinding Key="Enter"
Command="{Binding ReturnResultCommand}"
CommandParameter="{mx:True}" />
<Button Visibility="{Binding SomeProperty,
Converter={SomeBoolConverter},
ConverterParameter={mx:True}}">
<Button Visibility="{Binding SomeProperty,
Converter={SomeDoubleConverter},
ConverterParameter={mx:Double 42.5}}">
Tôi thực sự xác định rất nhiều MarkupExtension
lớp tùy chỉnh cho nhiều thứ phổ biến mà tôi không muốn nhất thiết phải lưu trữ trong tài nguyên của mình.