0

私はこの投稿で私のニーズにぴったり合うソリューションを見ましたhttps://stackoverflow.com/a/8858815/1462911

しかし、私はそれを適切に実装する方法を本当に知りません。

今のところ、文字列の座標を変換するPositionConverterがありますが、そのパラメーターである親(Canvas)のActualWidthを渡したいと思います。

ConverterHelperはIValueConverterとDependencyObjectを実装する必要がありますか、それともDependencyObjectだけを実装する必要がありますか?

少し迷ってしまいました…。

4

1 に答える 1

1

必要なことは、IMultiValueConverterとを介して最もよく達成されますMultiBinding

public class PositionConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        var scale = (double)values[0]; // this is your [0, 1] double
        var max = (double)values[1]; // this is the ActualWidth
        return scale * max;
    }
}

バインディングは次のようになります。

<Element.Property>
    <MultiBinding Converter="{StaticResource myConverter}">
        <Binding Path="path_to_the_original_double" />
        <Binding RelativeSource="{RelativeSource Mode=FindAncestor, AncestorLevel=1}"
                 Path="ActualWidth" />
    </MultiBinding>
</Element.Property>
于 2012-06-29T13:52:05.723 に答える