私は次の質問を見ました:how-do-you-apply-a-valueconverter-to-a-convention-based-caliburn-micro-binding。
そのトピックについてコメントを投稿できなかったので、ここに質問を投稿します。
ConventionManager.ApplyValueConverter
コンベンションベースのバインディングを使用する場合、値コンバーターにCaliburn.Microを使用するにはどうすればよいですか?
誰かがここに例を書くことができますか?
ApplyValueConverter
クラスFunc<>
内の静的デリゲートとして定義されConventionManager
ます。
コンベンションバインディングシナリオで独自のコンバーターを提供するには、ブートストラッパーFunc<>
のConfigure()
メソッドで独自のコンバーターを定義する必要があります。次のようになります。
注:変換はからstring
へであると想定していOpacity
ます。
public class AppBootstrapper : Bootstrapper<ShellViewModel> {
private static IValueConverter StringToOpacityConverter = new StringToOpacityConverter();
public override void Configure() {
var oldApplyConverterFunc = ConventionManager.ApplyValueConverter;
ConventionManager.ApplyValueConverter = (binding, bindableProperty, property) => {
if (bindableProperty == UIElement.Opacity && typeof(string).IsAssignableFrom(property.PropertyType))
// ^^^^^^^ ^^^^^^
// Property in XAML Property in view-model
binding.Converter = StringToOpacityConverter;
// ^^^^^^^^^^^^^^^^^^^^^^^^^
// Our converter used here.
// else we use the default converter
else
oldApplyConverterFunc(binding, bindableProperty, property);
};
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加