Tag: wpf 4.0

在WPF中更改动态创建的按钮背景

我有以下代码来动态创建并向面板添加按钮: StackPanel topPanel=…; Button button=new Button(); button.Content=”New Button “+topPanel.Children.Count; // Set button background to a red/yellow linear gradient // Create a default background brush var bgBrush=new LinearGradientBrush(new GradientStopCollection( new GradientStop[] {new GradientStop(Color.FromRgb(255,255,200),0.5), new GradientStop(Color.FromRgb(255,200,200),0.5)})); // Create a more intense mouse over background brush var bgMouseOverBrush=new LinearGradientBrush(new GradientStopCollection( new GradientStop[] {new GradientStop(Color.FromRgb(255,255,100),0.5), new GradientStop(Color.FromRgb(255,100,100),0.5)})); // Set […]

问题x:TypeArguments和XAML中的genericsList类

我为松散的XAML文件创建了以下标记。 HelloWorld 但是当我在IE中运行松散的XAML时,我收到此错误: XML命名空间’clr-namespace:System.Collections.Generic; assembly = mscorlib’中不存在标记’List’。 线’7’位置2’。 正如您所知,XAML中的generics是XAML 2009中的一个特性,并且只能在松散的XAML文件中工作。 但上面的代码不起作用。 任何线索为什么会发生此错误以及如何纠正问题? 提前致谢。

在TextBox上使用StringFormat绑定到double

我正在使用WPF的TextBox,将Text属性上的绑定设置为ViewModel上的double。 我的XAML看起来像这样: 不幸的是,当我将UpdateSourceTrigger切换到PropertyChanged并输入值12345 ,我得到12,354.00 ( 编辑 :注意4之前的5)。 这是在.NET格式化程序添加2到3之后将光标保持在同一位置的结果。 如何在将UpdateSourceTrigger设置为PropertyChanged的情况下使用StringFormat? 注意:这只发生在.NET 4中。

webBrowser控件WPF中的脚本错误

什么时候使用wpf工作webBrowser控件获取错误像“脚本错误”甚至我粘贴屏幕截图在这里甚至一些jquery UI和CSS不工作

如何在WPF 4中使用WinRT转换

我想为我的WPF 4项目使用新的Metro转换(AddDeleteThemeTransition,ContentThemeTransition,…)。 我可以使用DLL吗? 我在哪里下载它?

LayoutTransform中的ScaleTransform不起作用,但与RenderTransform一起使用

我正在尝试在我的应用程序中做两件事。 1.缩放图像 可以使用RenderTransform 。 但需要在LayoutTransform实现以启用Scrollviewer 。 XAML 工作。 不工作 2.旋转图像 适用于ScaleTransform和RenderTransform但需要使用ScaleTransform来获取ScrollViewer 问题出在LayoutTransform和LayoutTransform 使用ScrollViewer无法同时实现RotateTransform和RotateTransform 我尝试过Canvas XAML 旋转的不同行为但能够实现两种function,但ScrollViewer不能滚动。 旋转canvas的行为 – 尝试用ViewBox做同样的事情 旋转使用ScrollViewer缩放不起作用。 完整代码如下 任何人都可以帮我提出建议。 为’GazTheDestroyer’建议的解决方案 XAML

一段时间后,UI自动化事件在监视应用程序后停止接收,然后在一段时间后重新启动

我们正在使用Microsoft的UIAutomation框架来开发一个客户端,该客户端监视特定应用程序的事件并以不同方式响应它们。 我们已经开始使用该框架的托管版本,但由于延迟问题,请转到包含在UIACOMWrapper中的本机版本。 在我们(大规模)WPF应用程序中出现更多性能问题后,我们决定将其移至单独的终端应用程序(通过UDP将事件传输到我们的WPF应用程序),这似乎解决了所有性能问题。 唯一的问题是,似乎每隔几分钟,TabSelection,StructureChanged,WindowOpened和WindowClosed的事件就会被捕获几分钟。 令人惊讶的是,当发生这种情况时,仍会收到并处理PropertyChanged事件。 我将发布我们的事件监视器的相关代码,但这可能无关紧要,因为我们在使用Microsoft自己的AccEvent实用程序时看到了类似的行为。 我不能发布受监控应用程序的代码,因为它是专有的和机密的,我可以说它是一个承载WPF窗口的WinForms应用程序,也非常庞大。 有没有人在使用UI自动化框架时看到过这种行为? 感谢您的时间。 这是监视器代码(我知道事件处理在这里的UI自动化线程上,但是将它移动到专用线程并没有改变任何东西): public void registerHandlers() { //Register on structure changed and window opened events System.Windows.Automation.Automation.AddStructureChangedEventHandler( this.getMsAutomationElement(), System.Windows.Automation.TreeScope.Subtree, this.handleStructureChanged); System.Windows.Automation.Automation.AddAutomationEventHandler( System.Windows.Automation.WindowPattern.WindowOpenedEvent, this.getMsAutomationElement(), System.Windows.Automation.TreeScope.Subtree, this.handleWindowOpened); System.Windows.Automation.Automation.AddAutomationEventHandler( System.Windows.Automation.WindowPattern.WindowClosedEvent, System.Windows.Automation.AutomationElement.RootElement, System.Windows.Automation.TreeScope.Subtree, this.handleWindowClosed); this.registerValueChanged(); this.registerTextNameChange(); this.registerTabSelected(); this.registerRangeValueChanged(); } private void registerRangeValueChanged() { if (this.getMsAutomationElement() != null) { System.Windows.Automation.Automation.AddAutomationPropertyChangedEventHandler( this.getMsAutomationElement(), System.Windows.Automation.TreeScope.Subtree, this.handlePropertyChange, System.Windows.Automation.RangeValuePattern.ValueProperty); […]

WPF Sentinel对象以及如何检查内部类型

正如你们中的一些人发现的那样,一个新的特性(?)出现在WPF 4中,其中数据绑定引擎可以将名为“ {DisconnectedItem} ”的类MS.Internal.NamedObject的自定义控件实例传递给DataContext – 而不是您的代码所期望的数据项(当模板控件被其ItemsControl断开时会发生这种情况)。 这些被称为哨兵对象。 在现有代码中,这可能导致虚假exception,其中代码没有准备好。 这些可以被数据绑定子系统吞噬,或者它们可能造成严重破坏。 密切关注您的调试控制台。 无论如何,我在这个MSDN论坛上了解到了这一点 。 Sam Bent的post解释了这一切 。 现在去看看, 你会想知道这一点 。 本质上是这些事件永远不会被解雇(这就是错误),所以: 如果DataContext是sentinel对象,则忽略DataContextChanged事件。 所以,我想检查一下我的DataContext。 但是怎么样? 考虑: public bool IsSentinelObject(object dataContext) { return (dataContext is MS.Internal.NamedObject); } 猜猜会发生什么? 它没有编译,因为MS.Internal.NamedObject是内部的,我无法访问。 当然,我可以像这样破解它: public bool IsSentinelObject(object dataContext) { return dataContext.GetType().FullName == “MS.Internal.NamedObject” || dataContext.ToString() == “{DisconnectedObject}”; } (或其他东西,有效)。 我也遵循Sam的建议缓存对象以供以后引用相等性检查(它是一个单例)。 当然,这意味着我没有问题,不是真的。 但我很好奇,这篇文章肯定会让一些用户受益,所以无论如何都值得问: 有没有一种方法可以根据内部NamedObject类型精确检查类型,而无需求助于字符串比较?

在Aero上覆盖WPF中的按钮背景

因此,希望很简单,将按钮的背景更改为LightGreen,当鼠标光标hover在其上时为绿色,按下时将DarkGreen更改为DarkGreen。 以下XAML是我的第一次尝试: Hello 但是,唉,这不起作用。 我们只是实现目标的1/3。 是的,按钮变为浅绿色,但只要将鼠标hover在按钮上或按下它,您就会获得相应按钮状态的标准Aero镀铬。 不想放弃,我尝试以下放荡: … Hello … 现在我们已经从Aero.NormalColor.xaml中获得了整个friggin’控制模板。 唉,这没什么改变。 然后我从Microsoft_Windows_Themes:ButtonChrome元素中删除两个属性( RenderPressed和RenderMouseOver )。 不过,没有变化。 然后我删除Button的Background属性的设置,只留下PresentationFramework.Aero程序集的名称空间声明: … Hello … 最后,我们取得了进展。 我们已经从1/3的要求变为2/3,IsMouseOver和IsPressed工作,但在按钮的正常状态(没有被碾压或按下)时没有浅绿色背景,因为我已经删除了按钮的Background属性,以使其他两个状态应用并可见。 现在,在这个疯狂的XAML无法让我们获得正常按钮状态的LightGreen背景之后,我修改了样式以在那里抛出背景颜色: <Button xmlns… <ControlTemplate… … 最后,它按预期工作。 我是疯了,还是这些(以及更多)你必须通过Aero主题来改变一个按钮的背景颜色(正常,hover,按下)? 也许,如果我不必将整个dang ButtonTemplate包含在那里,只是为了从中删除两个属性( RenderMouseOver和RenderPressed ),生活就不会那么糟糕。 谢谢你的帮助 – 我结束了。 更新:但等待还有更多。 而不是从控件模板中删除RenderMouseOver和RenderPressed属性,只需从以下位置更改它们: <Microsoft_Windows_Themes:ButtonChrome SnapsToDevicePixels="true" … RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}" … 至: <Microsoft_Windows_Themes:ButtonChrome SnapsToDevicePixels="true" … RenderMouseOver="{Binding IsMouseOver}" RenderPressed="{Binding IsPressed}" … […]

Caliburn Message.Attach()抛出“找不到方法的目标”

我有一个列表框,我正在为ItemContainer设置样式以包含上下文菜单。 这是同样的xaml。 … 我在ViewModel中编写了目标方法,如下所示。 public void DeleteGroup() { //ToDo … } ViewModel被设置为UserControl的DataContext,其中有ListBox。 上面的代码导致“找不到方法的目标” 。 我不确定为什么这不起作用。 我也尝试过以下变化 其中UCRelayDispositionView是UserControl的名称。 为什么上面的代码不起作用? 编辑:1还尝试了以下内容 还有这个 编辑:2我试图在ItemContainer上以下列方式使用Tag,但它也不起作用。 编辑3:绑定错误 System.Windows.Data Error: 40 : BindingExpression path error: ‘PlacementTarget’ property not found on ‘object’ ”MenuItem’ (Name=”)’. BindingExpression:Path=PlacementTarget.Tag; DataItem=’MenuItem’ (Name=”); target element is ‘MenuItem’ (Name=”); target property is ‘TargetWithoutContext’ (type ‘Object’) System.Windows.Data Error: 4 : […]