我试图在视图(BiometricVM(对用户可见时获取触发器。有问题的视图在另一个视图 (ParentView.xaml( 中实例化并隐藏。我在SO中阅读了几个答案,但没有一个奏效。以下是相关代码:
ParentView.xaml
<Border BorderBrush="Black" BorderThickness="1" Background="#80000000" Visibility="{Binding BiometricViewVisible, Converter={StaticResource BooleanToVisibilityConverter}}" Grid.RowSpan="2" >
<Grid>
<WrapPanel HorizontalAlignment="Center" VerticalAlignment="Center" >
<Border Style="{StaticResource DefaultWindowBorder}" >
<Grid Background="White" >
<vw:BiometricView DataContext="{Binding BiometricVM}" Visibility="{Binding BiometricViewVisible, Converter={StaticResource BooleanToVisibilityConverter}}"/>
</Grid>
</Border>
</WrapPanel>
</Grid>
</Border>
父视图模型.cs
public bool BiometricViewVisible
{
get
{
return _biometricViewVisible;
}
set
{
_biometricViewVisible = value;
OnPropertyChanged(nameof(BiometricViewVisible));
}
}
BiometricView.xaml
<i:Interaction.Triggers>
<i:EventTrigger EventName="IsVisibleChanged">
<i:InvokeCommandAction Command="{Binding Path=OnLoadedCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
这是未被调用的命令(OnLoadedCommand(。
对此事的任何帮助将不胜感激。
为什么不能简单地在 BiometricViewVisible
源属性的 setter 中调用命令?
public bool BiometricViewVisible
{
get
{
return _biometricViewVisible;
}
set
{
_biometricViewVisible = value;
OnPropertyChanged(nameof(BiometricViewVisible));
if (value)
{
OnLoadedCommand.Execute(null);
}
}
}
由于 BiometricView
的 Visibility
属性直接绑定到此源属性,因此仅当此属性设置为 true 时,视图才会变得可见,因此您无需处理任何事件。