为什么设置PresentationTraceSources.TraceLevel=High后没有任何信息输出到输出窗口?

22

我一直在试图解决绑定ComboBox的SelectedItem时遇到的问题,但迄今为止没有成功,因此我开始寻找通过设置PresentationTraceSources.TraceLevel=High来获取更详细调试信息的方法。不幸的是,在这样做后,我在Debug类别下的Output窗口中没有看到任何相关的条目。

我正在使用Visual Studio 2010,并且我的项目是一个WinForms项目,大量使用了Interop来使用ElementHost来托管WPF内容。所有相关项目都目前正在构建.NET 3.5版本。如果有任何想法或建议可以帮助我在输出窗口中查看额外的跟踪信息,将不胜感激。

以下是我使用的代码片段。

<ComboBox xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"
            SelectedItem="{Binding Path=MyCollection.SelectedItem, Mode=TwoWay, diagnostics:PresentationTraceSources.TraceLevel=High}"
            ItemsSource="{Binding MyCollection, diagnostics:PresentationTraceSources.TraceLevel=High}"
            SelectedValuePath="Value"
            DisplayMemberPath="Value.DisplayName" />

我有同样的问题。这在过去曾经对我有效。你找到解决方案了吗? - Shaun Bowe
1
尝试WaltiD的建议。在我的情况下,上次测试时所有东西都开始工作了,但我怀疑这与我在解决与Intellisense有关的Visual Studio中的另一个问题时间接应用WaltiD的解决方案有关。 - jpierson
非常好,刚回到这个帖子,解决方案很好用。 - Shaun Bowe
3个回答

32

这是在Visual Studio 2010中的一个设置:

工具 -> 选项 -> 调试 -> 输出窗口 -> WPF跟踪设置 -> 数据绑定 -> 设置为警告(或者你想要的任何输出级别)。

标准设置是关闭的。

对我来说,这个解决方案有效。


奇怪的是,我回来看这个问题,现在它似乎可以工作了。我相信我不得不重置我的 Visual Studio 2010 设置,因为我正在解决另一个问题,现在看起来你指出的设置已经被设置为警告,尽管我不确定在我遇到问题时它设置为什么。如果其他人认为这是共识解决方案,我会接受你的答案。谢谢。 - jpierson
哦,亲爱的...我都快疯了...一直在用2008年的版本,不知道为什么它停止工作了。非常感谢。 - Ignacio Soler Garcia

2

确保您的DataContext不为空。如果它为空,将不会记录任何信息到输出窗口。


0

这里还可以看到一个答案 - https://dev59.com/Pmox5IYBdhLWcg3w_JLc#50282982

总结:请确保您的代码中没有覆盖设置的行,例如 -

System.Diagnostics.PresentationTraceSources.DataBindingSource.Switch.Level = System.Diagnostics.SourceLevels.Critical;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接