私はそれが古い質問だと知っていますが、これは誰かに役立つかもしれません。私が見つけた解決策は以下の通りです:
public class WattHoursConverter : FrameworkElement, IValueConverter
{
#region Unit (DependencyProperty)
/// <summary>
/// A description of the property.
/// </summary>
public string Unit
{
get { return (string)GetValue(UnitProperty); }
set { SetValue(UnitProperty, value); }
}
public static readonly DependencyProperty UnitProperty =
DependencyProperty.Register("Unit", typeof(string), typeof(WattHoursConverter),
new PropertyMetadata("", new PropertyChangedCallback(OnUnitChanged)));
private static void OnUnitChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
((WattHoursConverter)d).OnUnitChanged(e);
}
protected virtual void OnUnitChanged(DependencyPropertyChangedEventArgs e)
{
}
#endregion
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// you can use the dependency property here
...
}
}
とあなたのXAMLで:代替アプローチの
<UserControl.Resources>
<converters:WattHoursConverter x:Key="WattHoursConverter" Unit="{Binding UnitPropFromDataContext}"/>
</UserControl.Resources>
....
<TextBlock Grid.Column="1" TextWrapping="Wrap" Text="{Binding TotalCO2, Converter={StaticResource KgToTonnesConverter}}" FontSize="13.333" />
+1。 – iMatoria
'DependencyObject'などからコンバーターを継承する方法はありませんか?私はカスタムコントロールをオーサリングしており、コントロールの別のプロパティに従ってバインドされたオブジェクトをフォーマットする必要があります。 – Shimmy
「バインドされたオブジェクト全体をコンバーターに渡す」とはどういう意味ですか? –