Ich habe eine Schaltfläche dynamisch über Code hinter erstellt. Der Grund ist, weil ich möchte, dass die EntranceThemeTransition
jedes Mal wiederholen, wenn die Schaltfläche sichtbar ist.VisualStateManager hinzugefügt über Code hinter ausgelöst Windows 10
<Grid x:Name="gridRoot">
<Grid x:Name="gridNextKitty" Visibility="{Binding IsNextKittyButtonVisible, Converter={StaticResource BooleanToVisibilityConverter}}">
<Grid.ChildrenTransitions>
<TransitionCollection>
<EntranceThemeTransition FromHorizontalOffset="1000" FromVerticalOffset="0" IsStaggeringEnabled="False"/>
</TransitionCollection>
</Grid.ChildrenTransitions>
<!--<Button x:Name="btnNextKitty" Content="Next Kitty" FontSize="40" Command="{Binding BtnNextKittyClick}" Style="{StaticResource ButtonMenuStyle}" Background="#74b025" Width="300" Height="80" Margin="24" HorizontalAlignment="Center" VerticalAlignment="Center"/>-->
</Grid>
</Grid>
ist der Knopf wie dieses ich die VisualStateManager
über Code
if (viewModel.IsNextKittyButtonVisible)
{
btnNextKitty = new Button()
{
Content = "Next Kitty",
FontSize = 40,
Command = viewModel.BtnNextKittyClick,
Style = (Style)Application.Current.Resources["ButtonMenuStyle"],
Background = new SolidColorBrush(Color.FromArgb(255, 116, 176, 37)),
Width = 300,
Height = 80,
Margin = new Thickness(24),
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Center
};
gridNextKitty.Children.Add(btnNextKitty);
addVisualStateManager();
}
else
{
gridNextKitty.Children.Remove(btnNextKitty);
VisualStateManager.GetVisualStateGroups(gridRoot).Remove(vsg);
}
hinzugefügt hinter hinzugefügt, aber die
StateTriggers
ist immer wahr, obwohl
MinWindowWidth
< 500.
private void addVisualStateManager()
{
vsg = new VisualStateGroup();
VisualState vs = new VisualState();
vs.StateTriggers.Add(new AdaptiveTrigger
{
MinWindowWidth = 500,
});
vs.Setters.Add(new Setter
{
Target = new TargetPropertyPath
{
Path = new PropertyPath("(FrameworkElement.Width)"),
Target = btnNextKitty
},
Value = "240"
});
vsg.States.Add(vs);
VisualStateManager.GetVisualStateGroups(gridRoot).Add(vsg);
}
Wie kann ich machen Der Auslöser funktioniert über Code hinterher?
Ich habe Ihren Vorschlag versucht. Die Tastenbreite wurde nur am ersten Eingang angepasst. Sobald der Knopf entfernt und der Auslöser neu ausgelöst wurde, funktioniert es nicht mehr. – PutraKg