相关疑难解决方法(0)

使用Visual State Manager设置前景的问题

我有一个WPF应用程序,我正在尝试使用.Net v4 Visual State Manager设置TextBox样式.具体来说,我试图为MouseOver状态设置Foreground和Background的颜色.

发生的事情是,虽然背景和边界正在完美变化,但前景并非如此.如果我使用的画笔通过StaticResource获得颜色,那么前景根本不会改变.如果我使用的画笔通过DynamicResource获取颜色,那么当我将鼠标悬停在TextBox上时,所有TextBox的前景都会发生变化.显然,要么我做错了,要么我想做的事情根本不可能用VSM(这会令人失望).

以下是我使用的资源:

<Color x:Key="ControlBackgroundColor" R="178" G="178" B="178" A="255" />
<Color x:Key="ControlForegroundColor" R="0" G="0" B="0" A="255" />
<Color x:Key="BorderColor" R="127" G="127" B="127" A="255" />
<Color x:Key="MouseOverControlBackgroundColor" R="0" G="0" B="0" A="255" />
<Color x:Key="MouseOverControlForegroundColor" R="255" G="255" B="255" A="255" />
<Color x:Key="MouseOverBorderColor" R="178" G="178" B="178" A="255" />

<SolidColorBrush PresentationOptions:Freeze="True" x:Key="ControlBackgroundBrush" Color="{DynamicResource ControlBackgroundColor}" />
<SolidColorBrush PresentationOptions:Freeze="True" x:Key="ControlForegroundBrush" Color="{DynamicResource ControlForegroundColor}" />
<SolidColorBrush PresentationOptions:Freeze="True" x:Key="BorderBrush" Color="{DynamicResource BorderColor}" />

<SolidColorBrush PresentationOptions:Freeze="True" x:Key="MouseOverControlBackgroundBrush" Color="{DynamicResource MouseOverControlBackgroundColor}" />
<SolidColorBrush PresentationOptions:Freeze="True" x:Key="MouseOverControlForegroundBrush" Color="{DynamicResource MouseOverControlForegroundColor}" />
<SolidColorBrush …
Run Code Online (Sandbox Code Playgroud)

wpf templates vsm

9
推荐指数
1
解决办法
5527
查看次数

WPF:如何注册其他隐式值转换器?

我发现了一个问题,询问如何避免向自己的应用程序资源添加自定义值转换器:

在WPF中使用值转换器,而不必先将它们定义为资源

但是我想超越它并注册那些隐含的转换器,如下例所示:

<SolidColorBrush Color="Blue" />
Run Code Online (Sandbox Code Playgroud)

在这里,我假设一些隐含的"StringToSolidColorBrushConverter"正在踢,这使得示例工作.

这个例子并不能正常工作:

<Window.Resources>
    <Color x:Key="ForegroundFontColor">Blue</Color>
</Window.Resources>

<TextBlock Foreground={StaticResource ForegroundFontColor}>Hello</TextBlock>
Run Code Online (Sandbox Code Playgroud)

我相信这是因为没有任何证据ColorToSolidColorBrushConverter表明WPF可以拿起并使用它.我知道如何创建一个,但是如何"注册"它以便WPF自动使用它而不在绑定表达式中指定转换器?

.net wpf ivalueconverter

7
推荐指数
1
解决办法
1414
查看次数

标签 统计

wpf ×2

.net ×1

ivalueconverter ×1

templates ×1

vsm ×1