Articles of wpf

计算richtextbox中所有单词的最有效方法是什么?

我正在写一个文本编辑器,需要提供一个实时字数。 现在我正在使用这个扩展方法: public static int WordCount(this string s) { s = s.TrimEnd(); if (String.IsNullOrEmpty(s)) return 0; int count = 0; bool lastWasWordChar = false; foreach (char c in s) { if (Char.IsLetterOrDigit(c) || c == ‘_’ || c == ‘\” || c == ‘-‘) { lastWasWordChar = true; continue; } if (lastWasWordChar) { lastWasWordChar = […]

Caliburn Micro WPF窗口管理

我想使用caliburn.micro启动一个WPF应用程序,所以我可以尽可能多地使用TDD,我之前使用过caliburn.micro,而WPF似乎是一个不同的船,文档并不完整就像WP7那样。 我用我的Bootstrapper设置了这个项目 public class ApplicationBootstrapper : Bootstrapper { private SimpleContainer _container; private WindowManager _windowManager; protected override void Configure() { _container = new SimpleContainer(); _windowManager = new WindowManager(); _container.RegisterSingleton(typeof(MainViewModel), “MainViewModel”, typeof(MainViewModel)); _container.RegisterSingleton(typeof(DataViewModel), “DataViewModel”, typeof(DataViewModel)); } protected override object GetInstance(Type service, string key) { return _container.GetInstance(service, key); } protected override IEnumerable GetAllInstances(Type service) { return _container.GetAllInstances(service); } […]

如何停止动画WPF?

如何停止动画,以便它不会产生Completed事件。 这是一个简单的例子 支持代码: private void Border_MouseEnter(object sender, MouseEventArgs e) { var a = new DoubleAnimation { To = 0, Duration = TimeSpan.FromMilliseconds(4000) }; a.Completed += (obj, args) => MessageBox.Show(“Boom!”); border.BeginAnimation(Border.OpacityProperty, a); } private void Border_MouseLeave(object sender, MouseEventArgs e) { border.BeginAnimation(Border.OpacityProperty, null); border.Opacity = 1; } 如果我在矩形变为白色之前移动鼠标,它会在一段时间后显示弹出窗口。 怎么预防这个? 让我们假设Border_MouseLeave和Border_MouseEnter方法彼此不了解(它们不能相互传递动画实例变量)。

C#在WebBrowser中调用JavaScript

我试图在我的WebBrowser调用JavaScript方法: WebBrowser webBrowser = new WebBrowser(); webBrowser.NavigateToString(html); webBrowser.LoadCompleted += ((s, r) => { try { object tmp = webBrowser.InvokeScript(“GetData”); } catch (Exception exc) { } }); 这是HTML : function GetData () { return 50; } 但是当我调用javascript时: object tmp = webBrowser.InvokeScript(“GetData”); 我得到Exception : 信息: An unknown error has occurred. Error: 80020006. StakeTrace: at Microsoft.Phone.Controls.NativeMethods.ValidateHResult(Int32 hr) at […]

将XAML PathGeometry转换为WPF PathGeometry

我想要由LineSegment组成的PathGeometry。 所以,我使用第一个代码,但它是错误的。 PathGeometry temp = (PathGeometry)Geometry.Parse( “” + “” + “” + “” + “” + “” + “” + “” + “” + “”); 如果我使用第二个代码,它不是错误,但它不包含LineSegment。 结果将是PolyLineSegment,但我想要LineSegment。 PathGeometry temp = (PathGeometry)Geometry.Parse( “M29,329L30,331L31,334L33,336L34,338L36,341L38,343L39,345L41,348L44,352L46,353L47,355L48,356L49,357L49,357L50,358L50,358L51,357L50,356L51,354L51,350L53,342L54,334L58,320L60,315L61,311L63,308L63,306L64,304L65,303L65,302L66,301L66,301L66,301L66,301L66,301L66,301L66,301”); 如何将XAML PathGeometry转换为WPF PathGeometry? 谢谢

在Windows窗体中等效的canvas

我正在创建一个简单的应用程序,以显示多个图像一个接一个。 在WPF中,我使用了相当于图像数量的canvas数量,并将这些canvas添加到主canvas中。 在每个canvas中使用Image控件,我和我一起上传了图像,看起来很不错。 现在,我试图在Windows窗体中执行相同的操作。 我尝试使用Panel(作为WPF中的主canvas)并使用Panel_Paint事件在其上绘制图像。 没事。 但是我需要添加一些内容(因为我在WPF中添加了多个canvas),但是没有任何攻击。 我计划了几个小组,但他们都需要Panel_Paint来绘制图像。这是一些难以维护的……还有其他想法吗?

WPF列表框动态填充 – 如何让它刷新?

我是WPF的新手,所以我觉得这很简单。 我有一个带有列表框和按钮的表单。 在按钮的单击处理程序中,我迭代地执行一些生成字符串的操作,我想将它放入列表框中。 列表框的xaml就像 和点击处理程序是一样的 private void btn_Click(object sender, RoutedEventArgs e) { List lstrFiles= new List(System.IO.Directory.GetFiles (“C:\\temp”, “*.tmp”); foreach(string strFile in lstrFiles) lbxProgress.Items.Add(strFile); } 很简单。 由于我的实际操作很长,我希望列表框能够像我每次更新一样进行更新 – 如何在每次添加时动态更新框?

覆盖回车键,但保持wpf数据网格中其他键的默认行为

让我感到困扰的是,按下数据网格中的回车键会将选择项向下移动一个项目,我希望能够在正常的keydown事件中决定它的作用。 所以我所做的是创建一个新类,它inheritanceDataGrid并覆盖OnKeyDown事件并将其用作我的datagrid。 这会产生一系列全新的问题,因为我显然必须重写所有其他按键(箭头键导航,shift +箭头键选择,pgup / pgdn等等)。 我一直试图破解它,但只是花了很多时间来重写已经写好的东西并且可能比我想出的更好。 那么如何在不弄乱datagrid的其他默认键绑定的情况下让enter键执行我想要的操作呢? 提前致谢

带ContentControl的WPF TabControl

我在SO上搜索了很多,并没有找到我的问题的答案。 我想将TabControl与MVVM一起使用。 以下是我将TabControl添加到MainWindow.xaml的方法 PageViewModels是ObservableCollection 。 IPageViewModel是一个具有一个属性Name简单接口。 此接口有两个实现PartnersViewModel和ProjectsViewModel 。 public class ProjectsViewModel : IPageViewModel { public String Name { get { return “Projects”; } } } public class PartnersViewModel : IPageViewModel { public String Name { get { return “Partners”; } } } 我希望每个选项卡都显示为ContentControl。 标题文本取自Name属性。 我的ProjectsView和PartnersView看起来像这样: 使用此代码, TabControl标题和内容完全相同。 “项目内容”/“合作伙伴内容”显示在选项卡标题中,并且(在标签内容中也可以)。 当我将更改为标签时,标题包含datagrid(sic!)。 我怎样才能使其正常工作。 我的意思是如何将标题显示为属性Name和标签内容的值作为正确呈现的或具体取决于PageViewModels 。

带内容的WPF新窗口

我想在现有的主要Windwoe旁边创建一个带有可滚动文本框的新窗口。 我在按下“打开新窗口”按钮的主窗口中按下然后它应该打开一个带有可滚动文本框的新窗口。 在form2 在WPF中,您可以在主窗口中拖放元素,但不能在新窗口中执行此操作。 所以我认为只有在MainWindow.xaml.cs中创建一个新窗口时才有可能 我能够创建一个新的窗口槽: private void btnConnect_Click(object sender, RoutedEventArgs { Form form2 = new Form(); //Do intergreate TextBox with scrollbar in form2 form2.Show(); } 现在我想要一个文本框 但是我怎么能在C#或WPF中做到这一点? 谢谢