在WPF中添加两个绑定

时间:2014-04-07 22:23:11

标签: wpf xaml binding ivalueconverter

我最近一直在玩wpf并且卡在了我想要使用两个绑定路径值sum作为第三个控件的绑定的位置。我尝试使用值转换器,但没有成功。如果任何人能引导我走上正确的道路,我将不胜感激。

这是我到目前为止所做的:

我有两个编码器,如

  <my3:NVAngle Canvas.Left="400" Canvas.Top="610" BindableValueExtended="120" BindableValueRetracted="0" AnimationDuration="2" x:Name="nvAArm3Rotate" BindableValue="0" InvertExtendedTag="False" InvertRetractedTag="False"  />
  <my3:NVAngle Canvas.Left="400" Canvas.Top="610" BindableValueExtended="50" BindableValueRetracted="0" AnimationDuration="2" x:Name="nvAArm2Rotate" BindableValue="0" InvertExtendedTag="False" InvertRetractedTag="False"  />

我想用一个角度旋转图像,该角度是上述两个角度编码器的总和。类似的东西:

<Image Canvas.Left="100" Canvas.Top="200" Source="/Images/ExtraInter.png" Stretch="Fill" Width="117" Height="15" RenderTransformOrigin="0.95, 0.5">
   <Image.RenderTransform>
                <RotateTransform>
                    <RotateTransform.Angle>
                        <MultiBinding Converter="{StaticResource BundleArm3Full}">
                            <Binding ElementName="nvABundleArm2Rotate" Path="BindableValue" />
                            <Binding ElementName="nvABundleArm3Rotate" Path="BindableValue" />
                        </MultiBinding>
                    </RotateTransform.Angle>
                </RotateTransform>
                    <!--120-->
                </Image.RenderTransform>
</Image>

我的转换器是:

 public class MultipleBindingAddConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        var doubleValues = values.Cast<double>().ToArray();

        var resultSum = doubleValues.Sum().ToString();

        return resultSum;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

我仍然看不到图像的旋转,尽管我可以保证BindableValues正在改变。非常感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以将Multibinding与执行总和的转换器一起使用。

<MultiBinding Converter="{StaticResource sumConverter}" >
  <Binding Path="FirstValue"/>
  <Binding Path="SecondValue"/>
</MultiBinding>