用户控件事件触发器(当可见)



我试图在视图(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);
        }
    }
}

由于 BiometricViewVisibility 属性直接绑定到此源属性,因此仅当此属性设置为 true 时,视图才会变得可见,因此您无需处理任何事件。

最新更新