我遇到了TargetUpdated事件看起來像是完美的問題。不幸的是,它看起來像Multibinding沒有TargetUpdated屬性。有沒有辦法設置這個或者我需要完全找到另一個解決方案。爲什麼Multibinding具有NotifyOnTargetUpdated,但沒有TargetUpdated屬性
繼承人一些代碼,以幫助
繼承人的結合...
<RotateTransform x:Name="LeftNeedle">
<RotateTransform.Angle>
<MultiBinding Converter="{StaticResource VoltageRatioConverter}" NotifyOnTargetUpdated="True" >
<Binding ElementName="root" Path="Running" />
<Binding ElementName="root" Path="Incoming" />
</MultiBinding>
</RotateTransform.Angle>
然後我有值轉換器...
public class VoltageRatioConverter : IMultiValueConverter
{
#region IMultiValueConverter Members
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values == null || values.Count((x) => x != null) != 2)
return 0.0;
double running = System.Convert.ToDouble(values[0]);
double incoming = System.Convert.ToDouble(values[1]);
return ((running/incoming) - 1);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
什麼我m想要做的是檢索結果數字,並將其傳遞給一個函數來更新角度/動畫
private static void OnAngleValueChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
GaugeCluster gauge = o as GaugeCluster;
if ((double)e.NewValue > 70)
{
VisualStateManager.GoToState(gauge, "RightWobble", false);
}
else if ((double)e.NewValue < -70)
{
VisualStateManager.GoToState(gauge, "LeftWobble", false);
}
else
{
if ((double)e.OldValue > 70 || (double)e.OldValue < -70)
{
VisualStateManager.GoToState(gauge, "StandingState", false);
}
}
}
^這個功能,我只是測試,以確保它實際上是通過使從兩個依賴屬性中的一個回調的工作。理想情況下,函數體是我想在TargetUpdated事件上使用的。
如果在MultiBinding中的某個單獨綁定上設置了TargetUpdated,那麼這足夠了嗎? – Goblin 2010-07-23 22:47:35
否,因爲決定動畫的值來自多變換器對這兩個值都變化的乘積。 – 2010-07-26 17:19:24