繁体   English   中英

为完全独立的Uielement获取SelectedItem作为DataContext

[英]Getting the SelectedItem as DataContext for a completly independent Uielement

我开始使用wpf和mvvm模式在c#中编写程序以学习该程序语言。 很抱歉,我终于遇到了无法使用Google解决的问题。 但是我尝试保持精确。

首先,我展示 GUI,以便我可以更轻松地解释我的问题。

MainWindow的xaml文件位于此处

如您所见,这不是一个严肃而重要的程序,我只是通过它学习一些技术。

现在是我的主要问题我需要页脚中第二个ListView(Consumables)的SelectedItem属性。 我以为这不会是一个严重的问题,因为我可以使用相对路径和列表视图的名称将其绑定到所选项目。 一旦将项目添加到此列表视图中,此方法将不起作用并导致空引用错误。 我仔细检查了代码,确定没有在那儿做错什么。 所以我认为问题是,这是一个后代ui元素。

我的下一个尝试是在主视图模型中创建一个绑定到所选项目的新属性。 您可以在第136行中找到它。但是正如我发现的那样,如果我单击某个项目,这也会导致System.NullReferenceException。 我认为这是因为此属性是只读的。 我不知道该怎么办。 将页脚的SelectedItem绑定为DataContext还没有其他可能性吗?

我的第二个问题是关于第27行的 TabControl应该始终自动选择第一个Tab。 但是它只能每隔第二次。 这很有趣。 如果我向下滚动冠军组合框,则第一个选项卡将变为:已选择-未选择-已选择-...

我的第三个也是最后一个问题是72 ,与第50行类似(DataContext也相同),但是您看到第50行的itemtemplate的ContextMenu的ICommand起作用,而contextmenu(第72页)没有调用Icommand 。 奇怪的。

这是一个有趣的项目,因此,如果我的信息还不够,我可以为您提供源代码。 -很抱歉,只允许两个超链接-

请帮我。 我对这种意想不到的行为感到有些困惑。 我还没有找到任何可以帮助我的东西,很抱歉,如果这些问题的答案很简单:P

只是强调一下:主要问题是我真正需要回答的唯一问题。 第二个可以通过编程解决。 为了解决第三个问题,我可以删除此功能。

我为每一个提示而高兴!

还没有讨论完整个问题,但是您应该将所选项目绑定到您的视图模型属性(双向绑定),然后将另一个UIElement绑定到该视图模型属性(可能是一种方式绑定或检查值是否相等,以免引起stackoverflow异常) )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM