C# 公共变量不';I don’我没有出现在班级成员名单上

C# 公共变量不';I don’我没有出现在班级成员名单上,c#,xaml,mvvm,data-binding,mahapps.metro,C#,Xaml,Mvvm,Data Binding,Mahapps.metro,我对这门语言完全陌生,所以我觉得这是一个有点愚蠢的问题 我试图通过一个来自V4 Versionón和MVVM的示例,用MahApps.Metro框架创建一个汉堡包菜单 复制他的例子的所有结构,它工作正常,但现在我不知道如何继续。我不知道如何从SearchViewModel获取MainViewModel的属性,因为在访问对象时,我看不到它的属性 此外,我不知道如何绑定这些属性,也不知道如何将SearchView.xaml中的按钮与使用MainViewModel属性的操作链接起来 这些都是我的相

我对这门语言完全陌生,所以我觉得这是一个有点愚蠢的问题

我试图通过一个来自V4 Versionón和MVVM的示例,用MahApps.Metro框架创建一个汉堡包菜单

复制他的例子的所有结构,它工作正常,但现在我不知道如何继续。我不知道如何从SearchViewModel获取MainViewModel的属性,因为在访问对象时,我看不到它的属性

此外,我不知道如何绑定这些属性,也不知道如何将SearchView.xaml中的按钮与使用MainViewModel属性的操作链接起来

这些都是我的相关课程,但您可以从

main window.xaml


属性更改视图模型基础模型

使用System.ComponentModel;
使用System.Runtime.CompilerServices;
使用JetBrains.Annotations;
命名空间ExampleProject.ViewModels
{
公共类PropertyChangedViewModel:INotifyPropertyChanged
{
公共事件属性更改事件处理程序属性更改;
[NotifyPropertyChangedInvocator]
受保护的虚拟void OnPropertyChanged([CallerMemberName]字符串propertyName=null)
{
PropertyChanged?.Invoke(这是新的PropertyChangedEventArgs(propertyName));
}
}
}
MainViewModel

namespace ExampleProject.ViewModels
{
公共类主视图模型:PropertyChangedViewModel
{
私人汉堡套餐;
私人汉堡包婚礼收藏;
公共主视图模型()
{
这个.CreateMenuItems();
}
public void CreateMenuItems()
{
MenuItems=新的HamburgerMenuItemCollection
{
新汉堡曼单位()
{
Icon=new PackIconMaterial(){Kind=PackIconMaterialKind.放大},
Label=“搜索项”,
ToolTip=“搜索视图。”,
标记=新的SearchViewModel(此)
},
新汉堡曼单位()
{
Icon=new PackIconMaterial(){Kind=PackIconMaterialKind.CreditCardOutline},
Label=“付款项目”,
ToolTip=“付款。”,
标记=新的PaymentViewModel(此)
},
新汉堡曼单位()
{
Icon=new PackIconMaterial(){Kind=PackIconMaterialKind.BookmarkMultipleOutline},
Label=“书签”,
ToolTip=“书签项。”,
Tag=newbookmarksviewmodel(此)
}
};
MenuOptionItems=新的HamburgerManuitemCollection
{
新汉堡曼单位()
{
Icon=new PackIconMaterial(){Kind=PackIconMaterialKind.Help},
Label=“关于”,
ToolTip=“一些帮助。”,
Tag=新AboutViewModel(此)
}
};
}
公共汉堡菜单项集合菜单项
{
获取{return\u menuItems;}
设置
{
如果(等于(值,_menuItems))返回;
_menuItems=值;
OnPropertyChanged();
}
}
公共汉堡婚礼集合菜单选项
{
获取{return\u menuOptionItems;}
设置
{
if(等于(value,_menuOptionItems))返回;
_menuOptionItems=值;
OnPropertyChanged();
}
}
}
}
SearchViewModel

namespace ExampleProject.Views
{
    /// <summary>
    /// Logic of interaction for SearchtView.xaml
    /// </summary>
    public partial class SearchView : UserControl
    {
        public SearchView()
        {
            InitializeComponent();
        }
    }
}
namespace ExampleProject.ViewModels
{
公共类SearchViewModel:PropertyChangedViewModel
{
私有只读属性ChangedViewModel\u mainViewModel;
公共搜索视图模型(PropertyChangedViewModel主视图模型)
{
_mainViewModel=mainViewModel;
}
}
}
SearchView.xaml


SearchView.xaml(代码隐藏)

namespace ExampleProject.Views
{
    /// <summary>
    /// Logic of interaction for SearchtView.xaml
    /// </summary>
    public partial class SearchView : UserControl
    {
        public SearchView()
        {
            InitializeComponent();
        }
    }
}
namespace ExampleProject.Views
{
/// 
///SearchtView.xaml的交互逻辑
/// 
公共部分类SearchView:UserControl
{
公共搜索视图()
{
初始化组件();
}
}
}

谢谢。

属性更改视图模型
没有
myGlobalVar
MainViewModel

您必须将
mainViewModel
转换为
mainViewModel
,因为
mainViewModel
属于
PropertyChangedViewModel
类型,而不是
mainViewModel

((MainViewModel)mainViewModel).myGlobalVar = ...
这就是为什么尊重“命名约定”非常重要的原因,如果不是以错误的类命名,就不会将其与另一个类混淆

此外,为了使绑定能够工作,类成员必须是公共属性,否则它不能从XAML访问,并且不会显示在XAML intellisense中


如果您不想将其公开,则必须使用
dependencProperty

谢谢!我尝试过,现在可以访问每个viewModel中的属性。我尝试将此属性绑定到标签,但不起作用。我试过
我也试过:
公共字符串消息
this.mes