Tag: wpf

为什么WPF数据绑定会吞下exception?

我最近浪费了大量时间尝试调试WPF数据网格(来自WPF工具包)。 我有一个绑定到linq查询的列,其中包含抛出exception的属性(在几行中)。 WPF似乎捕获了exception,它只是使单元格为空。 我已修复导致exception的错误,但我想改变WPF的行为。 我一直想知道是不是有问题。 为什么吞下exception是默认行为,如何更改?

如何避免System.Runtime.InteropServices.COMException?

在我的Microsoft Surface项目中,我总是会遇到很多以下exception: ‘MuReSe.vshost.exe’ (Managed (v2.0.50727)): Loaded ‘C:\Windows\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll’ ‘MuReSe.vshost.exe’ (Managed (v2.0.50727)): Loaded ‘C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities\10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.dll’ ‘MuReSe.vshost.exe’ (Managed (v2.0.50727)): Loaded ‘C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll’ ‘MuReSe.vshost.exe’ (Managed (v2.0.50727)): Loaded ‘C:\Windows\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll’ ‘MuReSe.vshost.exe’ (Managed (v2.0.50727)): Loaded ‘C:\Windows\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll’ ‘MuReSe.vshost.exe’ (Managed (v2.0.50727)): Loaded ‘C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll’ ‘MuReSe.vshost.exe’ (Managed (v2.0.50727)): Loaded ‘C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll’ ‘MuReSe.vshost.exe’ (Managed (v2.0.50727)): Loaded ‘C:\Users\Roflcoptr\Documents\Visual Studio 2008\Projects\MuReSe\MuReSe\bin\Debug\MuReSe.vshost.exe’ ‘MuReSe.vshost.exe’ (Managed (v2.0.50727)): Loaded ‘C:\Windows\assembly\GAC_MSIL\System.Core\3.5.0.0__b77a5c561934e089\System.Core.dll’ ‘MuReSe.vshost.exe’ (Managed (v2.0.50727)): Loaded ‘C:\Windows\assembly\GAC_MSIL\System.Xml.Linq\3.5.0.0__b77a5c561934e089\System.Xml.Linq.dll’ ‘MuReSe.vshost.exe’ […]

如何使用MVVM将焦点设置到文本框?

如何从ViewModel wpf中聚焦文本框?

使用MVVM Light的Messenger在视图模型之间传递值

有人可以帮我解释一下MVVM Light的Messenger吗? 我在这里阅读StackOverflow上的一篇文章: MVVM在视图模型之间传递值,试图得到它。 关于MVVM Light的文档在这一点上并不是很好,所以我完全不确定去哪里。 假设我有两个ViewModel和一个ViewModelLocator。 我希望能够在没有问题的情况下在所有三个之间传递参数。 我将如何使用信使进行此操作? 它有能力吗? 编辑:这是我的新实现。 截至目前,看起来好像MessengerInstance不会调用令牌。 我非常困惑。 在第一个ViewModel中: MessengerInstance.Send(SelectedDocument); 在第二个: MessengerInstance.Register(this, xdoc => CopySettings(xdoc)); 可能完全错了。 没有机会测试它,但当我这样做时,视觉工作室对我不那么生气。 在发送消息之前,MessengerInstance也会进行注册。

在WPF ListView中以编程方式选择项目

我无法弄清楚如何在ListView中以编程方式选择项目。 我正在尝试使用listview的ItemContainerGenerator,但它似乎不起作用。 例如,在以下操作之后obj为null: //VariableList is derived from BindingList m_VariableList = getVariableList(); lstVariable_Selected.ItemsSource = m_VariableList; var obj = lstVariable_Selected.ItemContainerGenerator.ContainerFromItem(m_VariableList[0]); 我已经尝试过(基于此处和其他地方的建议)使用ItemContainerGenerator的StatusChanged事件,但无济于事。 事件永远不会发生。 例如: m_VariableList = getVariableList(); lstVariable_Selected.ItemContainerGenerator.StatusChanged += new EventHandler(ItemContainerGenerator_StatusChanged); lstVariable_Selected.ItemsSource = m_VariableList; … void ItemContainerGenerator_StatusChanged(object sender, EventArgs e) { //This code never gets called var obj = lstVariable_Selected.ItemContainerGenerator.ContainerFromItem(m_VariableList[0]); } 这件事的关键在于我只想预先选择ListView中的一些项目。 为了不留下任何东西,ListView使用了一些模板和拖放function,所以我在这里包含了XAML。 本质上,此模板使每个项目成为包含一些文本的文本框 – 当选择任何项目时,将选中该复选框。 并且每个项目下面都会有一个小字形来插入新项目(这一切都很好): … […]

如何将WPF窗口发送到后面?

在我的应用程序中,我有一个用于绘制调试数据的窗口。 当它加载时,我想在所有其他窗口后面“在后台”打开它。 实现这一目标的最佳方法是什么?

如何以线程安全的方式访问c#WPF控件?

我尝试过使用MSDN中的示例,但它们似乎只适用于Windows窗体。 例如,使用.InvokeRequired的方法依赖于窗体控件,但是此方法不适用于WPF控件。 Backgound工作器方法也会抛出InvalidOperationException – 调用线程无法访问此对象,因为另一个线程拥有它。 那么如何在WPF环境中完成呢?

WPF更改combobox的背景颜色

在我的WPF应用程序中,我只想更改combobox的背景颜色。 我不是指下拉,我想要的只是选择背景设置的任何项目。 就像设置按钮的背景一样 – 当控件显示在屏幕上时,它应该具有LightYellow背景。 而已。 我在网上搜索了很多,但到处都可以找到下拉背景颜色的解决方案。 我尝试将SolidColorBrush和Style.Triggers应用于Combobox的TextBlock,但没有成功。 通过添加SolidColorBrush线,我得到了我的下拉背景设置,但这不是我想要的。 我的代码是: 任何人都可以帮我设置他正在寻找的所需组件的背景。 谢谢

从C#访问ListBox的ScrollViewer

我想从C#更改ListBox的ScrollViewer的属性。 我在Stackoverflow上找到了这个问题 。 我接受了接受的答案的建议,并将ScrollViewer作为子类的属性公开。 但是,这似乎不适用于下面显示的示例。 该问题中的一些评论也表明这种技术不起作用。 XAML: C#: using System; using System.Windows; using System.Windows.Controls; namespace StackoverflowListBoxScrollViewer { public class MyListBox : ListBox { public ScrollViewer ScrollViewer { get { return (ScrollViewer)GetTemplateChild(“ScrollViewer”); } } } public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); var myListBox = new MyListBox(); Content = myListBox; myListBox.Items.Add(new Button() […]

项目A无法引用项目B中的类

所以在我的解决方案中,我有两个项目。 A和B 在项目A (我的视图项目)中,我添加了一个指向B (My ViewModels Project)的程序集引用。 所以在代码背后,在Project B找到一个类就可以了。 using ViewModels.Appearance.Themes 当我试图在XAML中找到它时,问题出现了; xmlns:local=”clr-namespace:ViewModels.Appearance.Themes;assembly=ViewModels”> Intellisense似乎将其检测为有效位置,但是当我尝试在该命名空间中使用该类时… Intellisense告诉我: 在’BingImage’类型中找不到可附加属性’UseBingImage’。 似乎使其工作的唯一方法是BingImage.cs类具有直接位于Project B根目录中的命名空间。 但我在这里制定标准惯例并不完全舒服。 对于如何解决这个问题,有任何的建议吗?