0

値セットに合わせてアニメーション化する棒グラフがあります。アニメーションコードは次のようになります

<UserControl.Resources>
    <Storyboard x:Key="BootUp">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Height)" Storyboard.TargetName="MainBar">
            <EasingDoubleKeyFrame KeyTime="0" Value="350"/>
            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="{Binding CurrentValue, ElementName=UserControl}"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</UserControl.Resources>

そしてC#

int ThisValue=200;
public int CurrentValue
{
    get { return (int)ThisValue; }
    set { 
            ThisValue=(int)value;
            this.MainBar.ToolTip=value.ToString();
            System.Windows.Media.Animation.Storyboard storyBoard = (System.Windows.Media.Animation.Storyboard)FindResource("BootUp");
            storyBoard.Begin(this);
        }

}

これはうまくいくはずだと思いますが、戻るたびに

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=UserControl'. BindingExpression:Path=CurrentValue; DataItem=null; target element is 'EasingDoubleKeyFrame' (HashCode=27594380); target property is 'Value' (type 'Double')

何が起こっている?

4

1 に答える 1

2

バインディングが UserControl を見つける方法を変更すると、うまくいくはずです。

これを置き換えます:

Value="{Binding CurrentValue, ElementName=UserControl}"

..これとともに:

Value="{Binding CurrentValue, RelativeSource={RelativeSource AncestorType=UserControl}}
于 2012-11-14T19:23:53.627 に答える