Wpf 如果我通过故事板设置源,为什么图像是空的?

Wpf 如果我通过故事板设置源,为什么图像是空的?,wpf,silverlight,windows-phone-8,Wpf,Silverlight,Windows Phone 8,我正在编写一个自定义WP8控件,需要从VisualStateManager管理的情节提要中更改图像的源 我的XAML <Style TargetType="local:StateImageButton"> <Setter Property="BorderThickness" Value="0" /> <Setter Property="ImageStretch" Value="Uniform" /> <Setter Prope

我正在编写一个自定义WP8控件,需要从VisualStateManager管理的情节提要中更改图像的源

我的XAML

<Style TargetType="local:StateImageButton">

    <Setter Property="BorderThickness" Value="0" />
    <Setter Property="ImageStretch" Value="Uniform" />

    <Setter Property="InactiveImage" Value="/StarLine.Controls;component/Resources/StateImageButton/ButtonInactive.png" />
    <Setter Property="DisabledImage" Value="/StarLine.Controls;component/Resources/StateImageButton/ButtonDisabled.png" />

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="local:StateImageButton">
                <Grid>
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Normal" >
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="viewImage" Storyboard.TargetProperty="Source">
                                        <DiscreteObjectKeyFrame KeyTime="0:0" Value="{TemplateBinding InactiveImage}" />
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Disabled">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="viewImage" Storyboard.TargetProperty="Source">
                                        <DiscreteObjectKeyFrame KeyTime="0:0" Value="{TemplateBinding DisabledImage}" />
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>

                    </VisualStateManager.VisualStateGroups>

                    <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                        <Image x:Name="viewImage"
                               Stretch="{TemplateBinding ImageStretch}"
                               Margin="{TemplateBinding Padding}"
                               HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                               VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
                    </Border>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
最后是更改VisualState的代码

private void UpdateState()
        {
            if(IsEnabled)
            {
                VisualStateManager.GoToState(this, "Normal", false);
            }
            else
            {
                VisualStateManager.GoToState(this, "Disabled", false);
            }           
        }

所有部分似乎都正确,但图像源没有更改

请尝试将Storyboard.TargetProperty设置为image.source确保图像路径正确。验证是否准确检索图像。所有设置程序都正确。如果我将TemplateBinding直接添加到image元素,则工作正常。因此,我编写了一个C代码来解决这个问题,并将在有空闲时间时返回VSM。
private void UpdateState()
        {
            if(IsEnabled)
            {
                VisualStateManager.GoToState(this, "Normal", false);
            }
            else
            {
                VisualStateManager.GoToState(this, "Disabled", false);
            }           
        }