Tag: wpf

单击WPF richtextbox中的TextBlock

我有一个像这样的flowdocument: var mcFlowDoc = new FlowDocument(); var para = new Paragraph(); para.Inlines.Add(textBlock1); para.Inlines.Add(textBlock2); para.Inlines.Add(textBlock3); mcFlowDoc.Blocks.Add(para); richTextBox1.Document = mcFlowDoc; 我需要一个事件来触发鼠标点击文本块: void TextBlock_Click(object sender, MouseButtonEventArgs e) { TextBlock tb = sender as TextBlock; } Run的事件处理程序被调用并正常工作( 在flowdocument中更改内联 ),但TextBlock的事件处理程序不是。 我究竟做错了什么? 谢谢

Wpf – 接收框架元素属性的属性值更改通知

如何挂钩FrameworkElement属性的属性值更改通知? 我们在运行时加载xaml,对于可视树中的每个元素,我们需要连接一些东西来接收属性值更改通知,当有人更改元素的属性值时。 如果存在,最好的方法是什么?

WPF PropertyGrid支持多种选择

这个文档是否仍然有效或者我遗漏了什么? http://doc.xceedsoft.com/products/XceedWpfToolkit/Xceed.Wpf.Toolkit~Xceed.Wpf.Toolkit.PropertyGrid.PropertyGrid~SelectedObjects.html PropertyGrid控件似乎没有SelectedObjects或SelectedObjectsOverride成员。 我正在使用针对.NET Framework 4.0的Toolkit的最新版本(2.5)。 UPDATE @ faztp12的回答让我了解了。 对于寻找解决方案的其他人,请按照下列步骤操作: 将PropertyGrid的SelectedObject属性绑定到第一个选定的项目。 像这样的东西: 侦听PropertyValueChanged事件,并使用以下代码将属性值更新为所有选定对象。 private void PG_PropertyValueChanged(object sender, PropertyGrid.PropertyValueChangedEventArgs e) { var changedProperty = (PropertyItem)e.OriginalSource; foreach (var x in SelectedObjects) { //make sure that x supports this property var ProperProperty = x.GetType().GetProperty(changedProperty.PropertyDescriptor.Name); if (ProperProperty != null) { //fetch property descriptor from the actual declaring type, otherwise […]

Window AllowTransparency = true时WPF硬件加速了吗?

我一直在寻找在WPF中制作自己的窗口框架,类似于Visual Studio。 我已经读过,设置AllowsTransparency = true会强制WPF以软件模式呈现。 这个例子是我混淆的原因(强调我的),其中指出: 仅当AllowTransparency设置为“True”时,才能完成WPF窗口的自定义, 这会导致窗口是软件渲染的,可能没有那么快的GPU渲染。 但是,我在其他地方读过,使用窗口分层 可以实现硬件加速,这就是WPF所做的。 我也很难想象Visual Studio 2013–它的自定义框架和透明边框模糊 – 将是软件渲染的。 这个问题是否有确定的答案(假设Windows 7以上), 当Window AllowsTransparency为真时 , WPF硬件加速吗?

wpf中的DialogResult问题

我有一个窗口,我打开几次作为ShowDialog。 每次打开它我都会在第一次使用new关键字时: var myWindow = new MyWindow(); myWindow.ShowDialog(); 我第二次从MyWindow View Model类中打开它: new MyWindow().ShowDialog(); 在MyWindow代码后面我有2个事件。 一个是用户clcik ok,另一个是用户点击取消时。 void OnCancel(){ DialogResult = false; } void OnOk(){ DialogResult = true; } 事件从视图模型类触发,形成ICommand执行,而不是绑定到窗口的“确定”和“取消”按钮。 在xaml中,我为取消按钮执行了此操作: IsCancel = true; 这对于ok按钮: IsDefault = true; 在我第一次打开窗口时,我可以设置DialogResult = true,但在此之后,当我尝试设置DialogResult时,我有exception“Dialofresult只能在创建窗口后设置并显示为ShwDialog”。 我也看到DialogResult在第一次设置为true后是真的,我认为exception的原因,但我不明白为什么如果我关闭窗口并使用new关键字创建一个新的,为什么是真的。 。 任何建议 提前致谢 编辑:问题是,一旦我clcik“ok”按钮,DialogResult设置为true和saty true,我不能将其设置为false。 编辑 谢谢大家,我解决了这个问题。 问题是我注册了View Model事件(单击“ok”并点击“取消”)当用户点击“取消”时我删除了注册,但是当他点击“确定”时却没有…

如何覆盖样式

我在WPF ModernUI应用程序中使用Extended WPF Toolkit中的DecimalUpDown控件: 让我感到困惑的是:如果选择了强调颜色,例如红色,那么标准的ModernUI-Controls(如文本框)可以很好地适应这种颜色: 然而,DecimalUpDown控件坚持其风格。 例如,控件在激活时为蓝色,控件中使用的RepeatButtons看起来不像ModernUI按钮: 更糟糕的是:View中放置DecimalUpDown控件的所有TextBox现在都显示这种样式,并以蓝色而不是红色突出显示: 我怎么能改变呢? 编辑:当我遵循Ben的好建议时,这是生成的ControlTemplate: … 然后可以设置WatermarkTextBox和ButtonSpinner的样式: 到目前为止我没有管理过:有没有办法访问ButtonSpinner中的RepeatButtons,这样我也可以设置他们的样式?

C#嵌套的foreach循环优化

我有一个嵌套的foreach循环,我真的需要减少计算时间。 每个集合大约有50个成员,因此推断是巨大的。 我查看了很多关于SelectMany的信息,但我仍然不完全确定如何使用它,或者它是否是正确的解决方案。 List StringList; //Populated in previous code Type[] assemblyTypes = RandomAssembly.GetTypes(); foreach (String name in StringList) { foreach (Type at in assemblyTypes) { if (name == at.Name) { //Do stuff. } } } 提前致谢!

WPF 4触摸事件获得捏手势的中心

我正在使用.net 4 beta 2触摸库,我试图在我的WPF应用程序中实现缩放function。 我可以让缩放工作正常,但我想要的是放大捏手势的中心,我在API中看不到有关如何实现这一点的任何内容。 是否有一些方法或属性可以揭示在捏合手势中使用的2个联系人,以便我可以获得它们的中心? 编辑: 我刚刚调查使用TouchEventArgs的GetIntermediateTouchPoints方法,它似乎没有给我我想要的东西。 非常感谢马克

ContentPresenter布局传递

我试图配置wpf应用程序(以加快ListView显示复杂的多列datatemplated项目)。 我在申请时间表报告中理解数字时遇到问题: 说明说: 这是这个列模板(xaml): 问题: 什么意思是“元素”作为一种时间轴项目? 是布局通过(据我理解)还是其他的东西? 为什么孩子的总和(只有一个孩子= 0.33毫秒)不等于总时间(7.82毫秒)? ContentPresenter在7.5毫秒内做了什么?

C#使用newtonsoft删除json子节点

我正在使用.net 3.5中的c#wpf开发一个应用程序。 我使用newtonsoft库来解析json字符串。 我想知道如何删除json的子节点。 例如,我的json数据= {“employees”:[ {“firstName”:”John”, “lastName”:”Doe”}, {“firstName”:”Anna”, “lastName”:”Smith”}, {“firstName”:”Peter”, “lastName”:”Jones”}]} function jobject.Remove(“employees”); 成功删除所有节点 我想知道如何单独删除第一个员工细节。