Wpf 如果我通过故事板设置源,为什么图像是空的?
我正在编写一个自定义WP8控件,需要从VisualStateManager管理的情节提要中更改图像的源 我的XAMLWpf 如果我通过故事板设置源,为什么图像是空的?,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
<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);
}
}