Xaml DataTemplate ControlStoryboardAction中的UWP-情节提要仅第一次激发
请求是当ViewModel的属性SelectedItem引发更改时,my ListView的行闪烁 这是我的代码,问题是它只在第一次工作。随后的更改将被忽略Xaml DataTemplate ControlStoryboardAction中的UWP-情节提要仅第一次激发,xaml,binding,storyboard,uwp,behavior,Xaml,Binding,Storyboard,Uwp,Behavior,请求是当ViewModel的属性SelectedItem引发更改时,my ListView的行闪烁 这是我的代码,问题是它只在第一次工作。随后的更改将被忽略 <DataTemplate x:Key="myDataTemplate"> <Grid x:Name="myGrid"> <Interactivity:Interaction.Behaviors> <Core:DataTriggerBehavior B
<DataTemplate x:Key="myDataTemplate">
<Grid x:Name="myGrid">
<Interactivity:Interaction.Behaviors>
<Core:DataTriggerBehavior Binding="{Binding SelectedItem}" Value="True">
<Media:ControlStoryboardAction>
<Media:ControlStoryboardAction.Storyboard>
<Storyboard>
<ColorAnimation
To="#009ABF"
Storyboard.TargetName="myGrid"
Storyboard.TargetProperty="(Grid.Background).(SolidColorBrush.Color)"
AutoReverse="True"
Duration="0:0:1"
RepeatBehavior="1x" />
</Storyboard>
</Media:ControlStoryboardAction.Storyboard>
</Media:ControlStoryboardAction>
</Core:DataTriggerBehavior>
</Interactivity:Interaction.Behaviors>
<TextBlock Text="{Binding Name}"
Grid.Column="1"
VerticalAlignment="Top"
HorizontalAlignment="Left"
Margin="0,2,10,0"
FontSize="16"
TextAlignment="Left"/>
<!--OMISSIS-->
</Grid>
这就是我找到的解决办法 1) 使用情节提要的已完成事件
<Storyboard Completed="SelectedItemReset" FillBehavior="Stop">
3) 使用GalaSoft.MvvmLight.Messaging.Messenger与CodeBehind通信,并查看SelectedItem属性的重置
Xaml
代码隐藏
private void SelectedItemReset(object sender, object e)
{
GalaSoft.MvvmLight.Messaging.Messenger.Default.Send<Mvvm.ViewModels.Units.SelectedItemResetMessage>(new Mvvm.ViewModels.Units.SelectedItemResetMessage());
}
private void SelectedItemReset(对象发送方,对象e)
{
GalaSoft.MvvmLight.Messaging.Messenger.Default.Send(新建Mvvm.ViewModels.Units.SelectedItemResetMessage());
}
mvvmclass.ctor
public MyViewModel()
{
GalaSoft.MvvmLight.Messaging.Messenger.Default.Register<SelectedItemResetMessage>(this, message =>
{
if (this.SelectedItem == true)
this.SelectedItem = false;
});
}
publicMyViewModel()
{
GalaSoft.MvvmLight.Messaging.Messenger.Default.Register(此消息=>
{
如果(this.SelectedItem==true)
this.SelectedItem=false;
});
}
注意:我的DataTemplate位于单独的文件中,并使用ItemTemplate属性链接到ListView,这使我无法调用CodeBehind中完成的方法。这就是我找到的解决方案 1) 使用情节提要的已完成事件
<Storyboard Completed="SelectedItemReset" FillBehavior="Stop">
3) 使用GalaSoft.MvvmLight.Messaging.Messenger与CodeBehind通信,并查看SelectedItem属性的重置
Xaml
代码隐藏
private void SelectedItemReset(object sender, object e)
{
GalaSoft.MvvmLight.Messaging.Messenger.Default.Send<Mvvm.ViewModels.Units.SelectedItemResetMessage>(new Mvvm.ViewModels.Units.SelectedItemResetMessage());
}
private void SelectedItemReset(对象发送方,对象e)
{
GalaSoft.MvvmLight.Messaging.Messenger.Default.Send(新建Mvvm.ViewModels.Units.SelectedItemResetMessage());
}
mvvmclass.ctor
public MyViewModel()
{
GalaSoft.MvvmLight.Messaging.Messenger.Default.Register<SelectedItemResetMessage>(this, message =>
{
if (this.SelectedItem == true)
this.SelectedItem = false;
});
}
publicMyViewModel()
{
GalaSoft.MvvmLight.Messaging.Messenger.Default.Register(此消息=>
{
如果(this.SelectedItem==true)
this.SelectedItem=false;
});
}
注意:我的DataTemplate位于一个单独的文件中,并使用ItemTemplate属性链接到ListView,这使我无法调用CodeBehind中完成的方法。什么是
SelectedItem
type?,请提供cs code乍一看,这只是您的RepeatBehavior=“1x”
由于它对每个实例使用相同的情节提要,并且您在其上设置了自动翻转
。什么是SelectedItem
类型?请提供cs code乍一看,这只是您的RepeatBehavior=“1x”
因为它对每个实例使用相同的情节提要,并且您在其上设置了自动翻转
。