程序集A - ResourceDictionary包含StyleA样式.
程序集B - ResourceDictionary.MergedDictionaries将程序集A中的资源合并到B.
我想在Assembly B"基于"StyleA创建一个样式.可能吗?
我正在尝试创建这种风格:
<Style x:Key="StyleB" BasedOn="{StaticResource StyleA}">
<Setter Property="Button.Foreground" Value="Khaki"/>
</Style>
Run Code Online (Sandbox Code Playgroud)
但是如果我使用StyleB,我在运行时会得到一个XamlParseException异常:
无法将属性"Style"中的值转换为"System.Windows.Style"类型的对象.只能基于具有基本类型"IFrameworkInputElement"的目标类型的Style.标记文件'SamSeekApp; component/mainwindow.xaml'中对象'System.Windows.Controls.Button'出错
在HTML中,通用容器控件是DIV.它本身并没有做任何事情,但它却是一个很好的地方.
同样在WinForms中,通用容器控件是Panel.再次,这是我将用作占位符以后加载其他控件.
我应该为WPF使用什么?
有没有办法在WPF中动态更改(并应用)样式?
假设我在XAML中声明了样式:
<Style TargetType="local:MyLine"
x:Key="MyLineStyleKey" x:Name="MyLineStyleName">
<Setter Property="Fill" Value="Pink"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Fill" Value="Blue" />
</Trigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
在一个时刻,我需要改变的Pink颜色,来,比方说Green,与风格都行MyLineStyleKey成了绿色.一条线在发布时为粉红色,选择时为蓝色......现在,我需要更改未选择的属性(粉红色为绿色)...,所以这不仅仅是将其设置为其他颜色,即触发器(选择>蓝色) )将不再工作......这可能吗?怎么样?
是否可以将样式中的粉红色颜色绑定到Button背景,这将反映当前使用的样式颜色?
编辑:
对于1我想:
Style s = (Style)this.Resources["MyLineStyleKey"];
(s.Setters[0] as Setter).Value = background;
(s.Setters[1] as Setter).Value = background;
Run Code Online (Sandbox Code Playgroud)
但发生了一个例外:
在使用'密封''SetterBase'后,它无法修改.
如何在代码中设置以下内容?
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
Run Code Online (Sandbox Code Playgroud)
我正在使用App.xaml中合并的主题.它适用于所有控件,但是当我为某些东西定义样式时,例如TextBox,除非我BasedOn像上面一样使用主题样式,否则它将获得默认TextBox样式.
现在我正在创建一个DataGridTextColumn代码背后,我无法让它的BasedOn部分工作EditingElementStyle
Style editingStyle = new Style(typeof(TextBox));
editingStyle.BasedOn = ...?;
Run Code Online (Sandbox Code Playgroud)
有什么建议?此外,有没有办法获得主题样式而不是使用默认样式而不使用BasedOn?
谢谢
我想塑造我的WPF工具提示,如下图所示:

我该如何实现这一目标?
有没有办法在虚拟化TreeView中手动选择节点然后将其带入视图?
我在TreeView中使用的数据模型是基于VM-MV模型实现的.每个TreeViewItem的IsSelected属性绑定到ViewModel中的对应属性.我还为TreeView的ItemSelected事件创建了一个监听器,我为所选的TreeViewItem调用了BringIntoView().
这种方法的问题似乎是在创建实际的TreeViewItem之前不会引发ItemSelected事件.因此,启用虚拟化后,节点选择将无法执行任何操作,直到TreeView足够滚动,然后在最终引发事件时"神奇地"跳转到所选节点.
我真的很喜欢使用虚拟化,因为我的树中有数千个节点,并且在启用虚拟化时我已经看到了相当令人印象深刻的性能改进.
我在一台客户机器上销售一个WPF应用程序(几百个),整个应用程序窗口是黑色的,任何人都知道发生了什么?
该机器运行的是带有.net 3.5SP1的Windows XP,图形适配器是带有两个显示器的GeForce 6200(禁用一个显示器无法解决问题).
将"兼容性设置"设置为"256色"可以解决问题(但这不是一个可行的解决方案,我需要更多的颜色让应用看起来不错).
该应用程序是yaTimer(http://www.nbdtech.com/yaTimer/),它具有基于本文所述技术的自定义窗口镶边http://blogs.msdn.com/wpfsdk/archive/2008/09/ 08/custom-window-chrome-in-wpf.aspx在"Office 2007 without Aero"部分中.
如果有人能给我一个关于发生了什么的线索,我将非常感激.
谢谢.
在WPF应用程序中,我想构建一个"在文件中查找"输出窗格,在该窗格中我可以流式传输大量文本,而无需在每行重新分配内存,就像TextBox那样做.
WPF TextBox有一个Text属性,用于存储连续的字符串.每次,我想添加内容,我需要做textBox.Text += "New Text",这是不好的.
理想情况下,该控制将是虚拟的,只需要最少的资源,仅用于可见线.
我想过使用一个标准的ListBox有VirtualizingStackPanel,但它不允许跨行文本选择.
(在添加的每个新行中,我希望控件更新)
有什么建议吗?
我将ContentControl.DataTemplateSelector设置为我想要的.
我希望根据命令或其他任何东西,调用ContentControl以通过xaml或代码从选择器重新选择模板.
谢谢
我想使用XAML设置WPF按钮的样式,使其看起来像这些Windows 7通知区域弹出窗口的"混音器"和"更改日期和时间设置......"文本.
SystemColors的属性是否定义了该颜色?哪一个?
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.????}}" />
Run Code Online (Sandbox Code Playgroud)
