Tag: wpf controls

什么是WPF WebBrowser控件的一个很好的替代品?

我有一个MDI WPF应用程序,我需要添加Web内容。 首先,看起来我有2个选项内置到Frame控件和WebBrowser控件的框架中。 鉴于这是一个MDI应用程序,它不需要很长时间才能发现这些都不会起作用。 WPF WebBrowser控件包装使用Win32图形管道的IE WebBrowser ActiveX控件 。 “ 空域 ”问题几乎总结为“抱歉,布局不会很好地结合在一起”。 是的,我已经考虑过拍摄这些内容的快照,并将鼠标和键盘事件映射回浏览器控件,但我承担不起性能损失,我真的没有时间编写并彻底测试它。 我已经找了第三方控件,但到目前为止我只找到了Chris Cavanagh的 WPF Chromium Web Browser控件。 其中包含了Awesomium 1.5 。 这些非常酷,它们与WPF布局相得益彰。 但它们不符合我的性能要求。 它们在内存消耗方面非常重,而且对CPU使用率也不友好。 更不用说还有很多车。 如果你有兴趣,我会详细说明。 那么,你们中任何人都知道一个稳定的高性能WPF Web浏览器控件吗? 谢谢。

停止突出显示所选项目WPF ComboBox

我目前正在开发一个WPF用户界面,我的窗口上有一个combobox。 所以我希望用户能够从这个combobox中选择一个项目但是当它被选中时我不希望它以默认的蓝色突出显示。 我假设有一些方法可以在XAML中阻止它,但到目前为止我还没有找到解决方案。 谢谢。 PS我无法访问Expression Blend,所以如果有人建议解决方案可以在XAML中 编辑:只是为了让我更清楚我选择了我的意思是一旦你选择了一个值并且SelectionChanged事件被触发并且项目显示在combobox中并且combobox被突出显示如下:

C#WPF – 拖动图像

我试图获得一些简单的function,从文件中获取图像,将其添加到Canvas,然后允许用户左键单击(并保持)图像,然后将其拖动到Canvas(即更新图像的地点) 这是我到目前为止,我应该添加什么? private void btnAddImage_Click(object sender, RoutedEventArgs e) { try { System.Windows.Forms.OpenFileDialog open = new System.Windows.Forms.OpenFileDialog(); open.Filter = “Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp”; if (open.ShowDialog() == System.Windows.Forms.DialogResult.OK) { PictureBox PictureBox1 = new PictureBox(); PictureBox1.Image = new Bitmap(open.FileName); myCanvas.children.add(PictureBox1); } } catch (Exception) { throw new ApplicationException(“Failed loading image”); } }

在combobox中,如何确定突出显示的项目(未选择项目)?

首先,公平警告:我是C#和WPF的完全新手。 我有一个combobox(可编辑,可搜索),我希望能够拦截删除键并从列表中删除当前突出显示的项目。 在输入电子邮件地址时,我正在寻找的行为类似于MS Outlook。 当您给出几个字符时,会显示潜在匹配的下拉列表。 如果您移动到其中一个(使用箭头键)并单击“删除”,则会永久删除该条目。 我想在combobox中输入一个条目。 这是XAML(简化): 处理程序是: private void Directory_KeyUp(object sender, KeyEventArgs e) { ComboBox box = sender as ComboBox; if (box.IsDropDownOpen && (e.Key == Key.Delete)) { TrimCombobox(“DirectoryList”, box.HighlightedItem); // won’t compile! } } 使用调试器时,我可以看到box.HighlightedItem具有我想要的值,但是当我尝试输入该代码时,它无法编译: System.Windows.Controls.ComboBox’ does not contain a definition for ‘HighlightedItem’… 那么:我如何访问该值? 请记住,该项目尚未被选中。 它只是在鼠标hover在它上面时突出显示。 谢谢你的帮助。 这是显示调试器显示的屏幕截图。 我在“盒子”上盘旋,当显示单行摘要时,我然后在+ char上方盘旋以扩展到此图像: alt text http://sofzh.miximages.com/c%23/www.freeimagehosting.net

DockPanel.Dock =“右”不适用于最大化窗口的单一控件?

我正在使用DockPanel.Dock在特定位置(即左/右)进行对接控制。 问题是我的控件没有根据DockPanel.Dock位置对接。 下面是使用DockPanel.Dock=”Right”进行单一控制的代码 DockPanel.Dock=”Right”多个控件的代码 期待输出: 任何想法或想法将不胜感激。 提前致谢

如何通过箭头键禁用焦点更改

我有一个WPF窗口,其中包含一些控件(按钮,组框等)和一个Border内的一个大Viewport3D 。 视口显示3D场景,我希望箭头键移动其相机。 问题:箭头键总是将焦点更改为另一个UIElement 。 如何通过箭头键禁用焦点更改并让它们改变相机位置?

在C#中使用WebBrowser控件提交网页表单

我已经在SO和网络上看到了很多关于这个特定主题的post,大多数(如果不是全部)代码如下所示 private void btnSubmit_Click(object sender, RoutedEventArgs e) { webBrowser1.Navigate(new Uri(“http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/onsubmit.htm”)); } private void btnLogin_Click(object sender, RoutedEventArgs e) { mshtml.HTMLDocument htmlDoc = null; htmlDoc = (mshtml.HTMLDocument) this.webBrowser1.Document; if (webBrowser1.Document != null) { foreach (mshtml.HTMLFormElement form in htmlDoc.forms) { form.submit(); break; } } } 代码没有任何错误,但对于生命它没有提交。 我正在使用的示例页面有简单的按钮,它做什么,它提醒选择单选按钮,然后提交表单。 由于某些奇怪的原因,当使用WebBrowser控件通过代码提交表单时,表单已提交,但警报从未显示。 我不确定我在这里做错了什么。 任何有关这方面的帮助将不胜感激。

如何在菜单项上的父窗口下打开子窗口在WPF中单击?

我正在用C#开发一个应用程序。 我在WPF下使用.Net。 我想打开一个新的子窗口(如对话框),它应该在主窗口中打开,就在菜单栏的下方。 但是,新打开的窗口只显示OS任务栏。 如何在主窗口下打开各种新窗口(如对话框)?

将彩色控制台输出捕获到WPF应用程序

与此问题类似,除了在WPF应用程序中包含的控制台程序产生彩色输出,因此如果我能捕获颜色和文本,那将是很好的。 这是我的第一个WPF程序,我不知道如何去寻找/修改正确的控件,目前我只是使用一个可以工作但只捕获纯文本的TextBox。 更新:我尝试使用RichTextBox: richTextBox.Document.Blocks.Clear(); richTextBox.Document.Blocks.Add(new Paragraph(new Run(process.StandardOutput.ReadToEnd()))); 唉它只显示了纯文本。

基本窗口的WPF样式未在App.xaml中应用,但在Themes / Generic.xaml中

我正在为我的大多数窗口创建一个基本窗口类。 显然,对此最好的解决方案是单独的类,以及适用于它的样式。 问题是我在App.Resources没有应用我的 。 也就是说,如果它在外部ResourceDictionary定义,并合并到App.xaml的资源或本地字典中并合并,或者内联到App.Resources 。 但是, 在放入Themes/Generic.xaml 。 除了覆盖DefaultStyleKeyProperty之外,在基本窗口中根本不做任何特殊操作就可以certificate这个问题。 下面是ThemeWindow : public class ThemeWindow : Window { static ThemeWindow() { DefaultStyleKeyProperty.OverrideMetadata(typeof(ThemeWindow), new FrameworkPropertyMetadata(typeof(ThemeWindow))); } } 这是非常简单的我试图应用(它使Window背景变红,仅此而已): 使用ThemeWindow的MainWindow只是以下XAML: 现在,如上所述,如果您将该Style放在其自己的ResourceDictionary ,并将其包含如下: .. 这是行不通的。 如果你直接将样式内嵌到App.Resources ,它就不起作用。 我能找到的唯一情况是调用ResourceDictionary xaml Generic.xaml ,并将其放入应用程序的Themes/目录中。 我想知道为什么会发生这种情况。 我唯一的理论是,当WPF看到一个控件类型时,它将转到Themes ,并扫描所有ResourceDictionary的类型,然后回退到Generic.xaml并加载它。 这并不能解释为什么如果在合并的ResourceDictionary可用,它将不会加载。 请注意 ,如果将MergedDictionary放入MergedDictionary ,它会起作用,原因很明显。 我完全可以将ResourceDictionary合并到Generic.xaml如果这是我必须做的事情。 我只想了解技术细节,了解为什么需要这样。 这个不工作/工作的屏幕截图: