Tag: wpf

当Debug.Assert失败时导致VS2010调试器中断

当Debug.Assert的参数Debug.Assert值为false时,是否有任何方法可以在调试时导致Visual Studio 2010中断? 示例:在我的代码中,我有这样的行: Debug.Assert(!double.IsInfinity(x)); 如果我没有调试,则在断言失败时会弹出一个窗口。 但是当我调试时,断言会记录到“输出”窗格中,这很容易被遗漏; 没有弹出窗口,调试器不会停止。 因此:当Debug.Assert失败时,有没有办法强制Visual Studio调试器中断? (顺便说一句:我正在开发一个基于WPF的桌面应用程序。在Windows窗体应用程序中,行为似乎有所不同:这里,调试器在Debug.Assert上Debug.Assert 。) 编辑 :请让我澄清:我不是在寻找Debug.Assert()的替代方法,因为我使用的代码和外部代码充满了Debug.Assert()语句。 我正在寻找一种方法来导致Visual Studio调试器在Debugg.Assert失败时Debugg.Assert 。 (我认为早期的VS版本就是这样做的,并且VS2010中的行为发生了变化)。

在WPF中制作图表的最佳方法是什么? (或者一般来说也适用于WPF)

所以我在WPF中制作了一个软件,我希望能够从我存储的数据中制作图形。 只是带有x和y轴的折线图。 理想情况下,我希望他们对他们有一个优雅的优雅。 我知道WPF没有附带图表,我在WinForms项目中尝试过ZedGraph,但我坦率地说它看起来很难看。 在WPF中制作简单,优雅的图形的最佳方法是什么?

将进度条绑定到wpf中的mediaelement

在c#/ wpf中,我在窗口中添加了一个进度条和媒体元素。 我们的想法是,进度条显示媒体元素的播放量。 我尝试使用以下xaml: 我试图将Maximum和Value属性绑定到mediaelement。 但是当我将mp3加载到mediaelement时,进度条没有任何问题。 (正在播放音乐,因此mp3已加载并正常播放)。 我更喜欢用绑定来做这件事。 我在这做错了什么?

从值转换器访问资源字典中的颜色

我在ResourceDictionary中定义了几种颜色。 例如: #FFF7F1F3 #FFDDD8DA 所以我可以在应用程序的各处重用它们。 现在我写了一个值转换器来将项目内部状态转换为相关颜色。 如何访问值转换器代码中定义的颜色? 我的第一个想法是将字典作为转换器参数传递。 但我不知道如何实现这一目标。 问候 编辑 Application.Current.Resources不是一个选项。 因为我以后无法访问它。

WPF C# – 从另一个线程编辑列表框

我意识到我正在做的事情可能很愚蠢,但我正在学习WPF,并想知道如何做到这一点。 我有一个带有列表框的窗口。 列表框用于在程序运行时传递有关程序的状态消息。 例如“服务器已启动”“IP连接时的新连接”等。我希望在后台不断更新,因此我生成了一个新线程来处理更新,但是当我调用添加项目时,我得到了错误消息“调用线程无法访问此对象,因为另一个线程拥有它。” 知道如何从另一个线程更新列表框吗? 或者在后台等

WPF:如何在运行时向菜单添加新的menuitem?

我有一个带菜单的简单WPF应用程序。 我需要在运行时动态添加菜单项。 当我只是创建一个新的菜单项,并将其添加到其父MenuItem时,无论是否调用UpdateLayout,它都不会显示在菜单中。 允许菜单在运行时动态添加其他项目必须发生什么? 注意:以下代码不起作用。 MenuItem mi = new MenuItem(); mi.Header = “Item to add”; mi.Visibility = Visibility.Visible; //addTest is a menuitem that exists in the forms defined menu addTest.Items.Add(mi); addTest.UpdateLayout(); 目前,默认菜单项在xaml文件中定义。 我想在此菜单及其现有菜单项中添加其他菜单项。 但是,如上所述,上面的代码什么也没做。

Windowsapp store应用中的页面全局键盘事件

我正在开发一款游戏,一个基于WPF的Windowsapp store应用,用C#编写。 当玩家按下Esc键时,我想暂停游戏并显示一个菜单(继续,退出等)。 听起来很简单。 可悲的是,事实并非如此。 游戏在Windows.UI.Xaml.Controls.Page ,主要由Canvas的数百个Shape组成,但没有单个Button , TextBox或其他任何支持键盘交互的Shape 。 唯一的互动是点击或点击形状。 我需要为整个页面全局捕捉键盘事件,无论焦点是什么元素,或者根本没有任何焦点等等。每当按下Esc键时,必须触发一个事件。 我尝试了什么: 使用事件Page.KeyDown或覆盖Page.OnKeyDown(KeyRoutedEventArgs e) (或KeyUp):除非存在具有键盘焦点的TextBox等元素,否则不会触发。 但在我的UI中没有这样的元素。 使用不可见( Opacity = 0和/或在Canvas下隐藏)TextBox作为hack来使KeyDown工作:只要点击/点击Canvas或任何Shape,TextBox就会失去焦点并且黑客停止工作。 因此,需要更多的黑客来保持焦点,这与其他东西(例如菜单按钮)有关。 此外,TextBox偶尔会显示Windows软件键盘,这是非常不需要的。 一个勉强工作,脆弱的黑客。 使用InputGestures , KeyBinding等:不适用于Windowsapp store应用。 任何想法或解决方案?

WPF MVVM从VIEW MODEL获取父级

在MVVM WPF应用程序中。 如何从ViewModel设置第二个Windows父级? 例: view1 – viewModel1 viewModel1的命令调用: var view2 = new view2 view2.Owner = <—-这是问题所在。 如何从viewModel获取view1作为所有者? view2.Show() 编辑: 请参阅下面接受的答案,然后阅读以下编辑内容。 我正在使用MVVM灯 – > http://mvvmlight.codeplex.com/ (真棒顺便说一句) 烘焙消息传递系统非常棒。 我现在正在从viewmodel向我的视图发送一条消息,告诉它显示另一个窗口。 对于消息我当前在主视图中使用带有switch语句的字符串来确定要打开的视图; 但是我可能会修改也是MVVM light toolkit一部分的令牌。 谢谢!

绑定Loaded事件?

一旦我的MainWindow加载,我试图显示一个登录窗口,同时坚持MVVM模式。 所以我试图将我的主要Windows Loaded事件绑定到我的viewmodel中的事件。 这是我尝试过的: MainWindowView.xaml MainWindowViewModel.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ScrumManagementClient.ViewModel { class MainWindowViewModel : ViewModelBase { public void ShowLogInWindow(object sender, EventArgs e) { int i = 0; } } } 我收到的错误消息是“Loaded =”{Binding ShowLogInWindow}“无效。”{Binding ShowLogInWindow}’不是有效的事件处理程序方法名称。只有生成的或代码隐藏类的实例方法才有效。“

如何在XAML中实例化DataContext对象

我希望能够在XAML中为我的WPF StartupUri窗口创建DataContext对象的实例,而不是创建代码然后以编程方式设置DataContext属性。 主要原因是我不需要访问外部创建的对象,我不想仅仅为了设置DataContext而编写代码。 我确定我已经在某处读过如何在XAML中实例化DataContext对象,但我无法在任何常见的地方找到它…