У меня есть этот XAML код:VisualStateManager.GoToState возвращает ложь и визуальное состояние не изменяется
<Button x:Name="btnStartRecord" Visibility="Collapsed">
<Button.BorderBrush>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="0"/>
<GradientStop Color="#FFF3883E" Offset="1"/>
</LinearGradientBrush>
</Button.BorderBrush>
</Button>
<Button x:Name="btnStopRecord" Visibility="Collapsed">
<Button.BorderBrush>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="0"/>
<GradientStop Color="#FFF3883E" Offset="1"/>
</LinearGradientBrush>
</Button.BorderBrush>
</Button>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="MainStates">
<VisualState x:Name="RecordIconState">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="btnStartRecord" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
<!--<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>-->
</ObjectAnimationUsingKeyFrames>
<!--<ObjectAnimationUsingKeyFrames Storyboard.TargetName="btnStopRecord" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>-->
</Storyboard>
</VisualState>
<VisualState x:Name="StopRecordIconState">
<Storyboard>
<!--<ObjectAnimationUsingKeyFrames Storyboard.TargetName="btnStartRecord" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>-->
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="btnStopRecord" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
И в код, я называю такую функцию в OnLoad/Constructor:
private void SwitchRecordButtonContent()
{
{
if (m_bRecording)
{
//btnStartStopRecord.Content = "StopRecord";
VisualStateManager.GoToState(this, StopRecordIconState.Name, false);
VisualState currentState = MainStates.CurrentState;
Visibility temp = btnStartRecord.Visibility;
}
else
{
//btnStartStopRecord.Content = "StartRecord";
bool op = VisualStateManager.GoToState((Button)this.btnStartRecord, RecordIconState.Name, false); // I get this always false
VisualState currentState = MainStates.CurrentState;
Visibility temp = btnStartRecord.Visibility;
}
}
}
Но я см. визуальное изменение состояния, и я не могу понять, почему :(
Есть ли что-нибудь, что я делаю неправильно?
Является ли VSM прикрепленным к корневому элементу? – atomaras
да это, к сетке вокруг выше кода xaml. –
@atomaras Большое спасибо. Несмотря на то, что VAM был прикреплен к корню моего контекста, вокруг него была добавлена дополнительная Grid. Я попытался подключить его к этому, и он сработал! Большой!! Спасибо большое :) –