プロパティとマルチコナーターを備えたWPFコンバーター?
-
28-09-2019 - |
質問
コンバーター(iValueConverter)の使用と、マルチコンバーター(ImultivalueConverter)を使用したパラメーター(ConverterParameter)と複数のコンバーター値を渡すだけのパラメーター(ConverterParameter)として他の値を渡すことの違いは何ですか?
解決
主に2つの違いがあります。 1つは、ConverterParameterはバインディングではなく、プロパティの変更を聞くことがないため、値が変更された場合、バインディングは自動的に更新されないことです。
もう1つの違いは、converterParameterが変換と変換の両方への入力であり、マルチバインディングのすべてのバインディングは、変換された変換と出力の入力であることです。たとえば、DateTimeから文字列に変換する場合、ConverterParameterをフォーマット文字列にすることができます。
public class DateTimeConverter
: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return ((DateTime)value).ToString((string)parameter, null);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return DateTime.ParseExact((string)value, (string)parameter, null);
}
}
一方、2つのダブルからサイズに変換する場合は、戻ってから2つのダブルを返したいと思うでしょう。
public class SizeConverter
: IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return new Size((double)values[0], (double)values[1]);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
var size = (Size)value;
return new object[] { size.Width, size.Height };
}
}
所属していません StackOverflow