C# 我能';t更改“的可见性”;“嵌入式”;WPF中的视图

C# 我能';t更改“的可见性”;“嵌入式”;WPF中的视图,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我有一个视图(.xaml),其中我有另一个“嵌入”视图: 但它根本不会改变可见性。我尝试了以下方法: 将所有相关属性更改为public 检查主视图模型是否真的设置为主视图的上下文,是的 调试以查看是否确实调用了ExecHideMyView(),是的 将可见性=…作为的属性 现在我没有主意了。。。谢谢你的建议 Edit:我删除了DataContext=“{Binding Path=My_ViewModel}”,它突然起作用了。问题似乎就在那里。问题在于,当我设置DataContext=“{Bi

我有一个视图(.xaml),其中我有另一个“嵌入”视图:

但它根本不会改变可见性。我尝试了以下方法:

  • 将所有相关属性更改为
    public
  • 检查主视图模型是否真的设置为主视图的上下文,是的
  • 调试以查看是否确实调用了
    ExecHideMyView()
    ,是的
  • 可见性=…
    作为
    的属性
现在我没有主意了。。。谢谢你的建议


Edit:我删除了
DataContext=“{Binding Path=My_ViewModel}”
,它突然起作用了。问题似乎就在那里。

问题在于,当我设置
DataContext=“{Binding Path=My_ViewModel}”
时,它在
My_ViewModel
中搜索
My_Visibility
而不是主视图模型

因此,解决方案是将
myu可见性
移动到内部
myu视图模型

<Window.Resources>
    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</Window.Resources>

    <Grid DataContext="{Binding Path=My_ViewModel}" Visibility="{Binding Path=My_Visibility, Converter={StaticResource BooleanToVisibilityConverter}}">
        <Views:My_View/>
    </Grid>
    protected void ExecHideMyView()
    {
        My_Visibility = false;
        NotifyPropertyChanged("My_Visibility");
    }