我无法更改WPF中“嵌入式”视图的可见性

时间:2013-11-15 21:42:38

标签: c# wpf xaml mvvm

我有一个View(.xaml),里面有另一个视图“embedded”:

<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>

我有一个更改My_Visibility值的Button。

    protected void ExecHideMyView()
    {
        My_Visibility = false;
        NotifyPropertyChanged("My_Visibility");
    }

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

  • 将所有相关属性更改为public
  • 检查我的主ViewModel是否真的被设置为主视图的上下文,是的。
  • 调试以查看ExecHideMyView()是否真的被调用,是的是。
  • Visibility=...作为<Views:My_View/>
  • 的属性

现在我没有想法......感谢任何建议。

修改:我删除了DataContext="{Binding Path=My_ViewModel}",它突然起作用了。似乎存在问题。

1 个答案:

答案 0 :(得分:1)

问题在于,当我设置DataContext="{Binding Path=My_ViewModel}"时,它搜索My_Visibility内的My_ViewModel而不是主ViewModel。

因此,解决方案是将My_Visibility移至My_ViewModel内。