【问题标题】:Getting the SelectedItem as DataContext for a completly independent Uielement将 SelectedItem 作为完全独立的 Uielement 的 DataContext
【发布时间】:2012-06-01 19:06:20
【问题描述】:

我开始使用 wpf 和 mvvm 模式用 c# 编写程序来学习这种程序语言。很抱歉,我终于遇到了无法使用 Google 解决的问题。但我尽量做到精确。

一开始我present你是GUI,这样我可以更容易地解释我的问题。

MainWindow的xaml文件来自here。

如你所见,这不是一个严肃和重要的程序,我只是为了学习一些技术。

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

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

我的第二个问题是关于第 27 行。 TabControl 应始终自动选择第一个选项卡。但它只会每两次。这很有趣。如果我向下滚动 Champion Combo Box,第一个选项卡变为:选中 - 未选中 - 选中 - ...

我的第三个也是最后一个问题大约是 72,这与第 50 行相似(DataContext 也相同)但是您看到第 50 行的 itemtemplate 的 ContextMenu 的 ICommand 有效,而 contextmenu (l. 72) 不调用 Icommand。很奇怪。

这是一个有趣的项目,所以如果我的信息不够,我可以为您提供源代码。 --对不起,只允许两个超链接--

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

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

我为每一个提示感到高兴!

【问题讨论】:

  • 将您的问题分成多个部分(多个问题),并为每个问题提供示例代码。这是一个很大的问题,很难一口气读完。人们也可能只回答您的一个问题,因此这也使他们更容易回答。

标签: c# wpf xaml mvvm selecteditem


【解决方案1】:

尚未完成整个问题,但您应该将选定项目绑定到您的视图模型属性(双向绑定),然后将另一个 UIElement 绑定到此视图模型属性(可能是一种方式绑定或检查值是否相等)导致stackoverflow异常)

【讨论】:

  • 如果您阅读过 xaml 文件的第 136 行,您会看到我已经这样做了。只要我添加一个项目,它就会给我一个 System.NullReferenceException。 TwoWay Binding 和 OneWayToSource 已测试。还是谢谢。
  • 尝试在其中放置一个值转换器,看看是什么导致了空引用。
  • 抱歉,如果你愿意,我可以为你制作视频 -.- 如果我调试,我只能看到它正确设置所选项目,然后引发“propertychanged”事件,然后选定的项目被调用〜三次。无需再次单击,所选项目将再次保存,并调用〜8次,现在我得到相同数量的空引用错误。我没有跳过任何调试跳过,所以它的调用来自 gui。 (c# 代码中根本没有使用 selectedItem)-> 使用 OneWayToSource 会导致相同的错误!
  • 很奇怪。现在发生了其他事情。一旦我选择了该项目,该选项卡就会被取消选择。如果我单击此选项卡,则会发生相同的异常。我在转换器中写了一些调试消息:[链接]privatepaste.com/894547f602 对不起,它是德语,但你应该看看它的去向
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-17
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 2015-02-21
相关资源
最近更新 更多