我有一个自定义登录usercontrol,它有一个普通的文本框和一个密码框。
Blend拒绝与PasswordBox
合作,说“DP.UnsetValue”对PasswordChar属性无效。但是,该项目在Blend或VS2010中编译并运行良好。 VS2010中的苹果酒设计师似乎并不介意错误,因为它实际上为我的UserControl
提供了设计时配置。
通常,当我收到其中一个错误时,会发生一个InnerException,其中缺少文件/资源的路径。这不是这里的情况,我不知道如何在将来出现时如何解决这个问题。
我交换了标签,将PasswordBox
转换为普通TextBox
,这似乎没问题。但是我需要PasswordBox
提供的输入屏蔽。在Blend中注释掉该对象并完成我的控件样式是不太实际的。
这是我的Xaml:
<PasswordBox x:Name="PasswordTextbox" PasswordChar="*" Height="26" VerticalAlignment="Center" Grid.Column="1" Grid.Row="1" Margin="5" RenderTransformOrigin="0.5,0.5" TabIndex="3">
<PasswordBox.RenderTransform>
<TransformGroup>
<ScaleTransform/>
</TransformGroup>
</PasswordBox.RenderTransform>
<PasswordBox.Effect>
<DropShadowEffect />
</PasswordBox.Effect>
<PasswordBox.Triggers>
<EventTrigger RoutedEvent="UIElement.GotFocus">
<BeginStoryboard Storyboard="{StaticResource StoryboardScaleUpFontIncrease}"/>
</EventTrigger>
<EventTrigger RoutedEvent="UIElement.LostFocus">
<BeginStoryboard Storyboard="{DynamicResource StoryboardScaleNormalFontNormal}"/>
</EventTrigger>
</PasswordBox.Triggers>
</PasswordBox>
有谁知道如何调试此行为?
答案 0 :(得分:10)
我终于能够通过使用此博客条目中描述的技术来解决此问题:
http://web.archive.org/web/20090602111317/http://bea.stollnitz.com/blog/?p=52
答案 1 :(得分:10)
我在xaml设计师中也有同样的问题,但是方式却截然不同。我在这里添加细节,以防它对某人有帮助。
我使用的是第三方控件,它在dll中定义了自己的主题。我引用了这个dll并使用'StaticResource'来引用该dll中定义的一些资源。然后xaml设计师强调了我的xaml代码,说“D.Unset不是xxx的有效值”。但程序编译运行没有任何问题。
要消除这些恼人的下划线,解决方案很简单:将“StaticResource
”更改为“DynamicResource
”。
另一种更复杂的方法是使用“ResourceDictionary.MergedDictionaries
”将该dll中的资源包含到您的xaml文件中。
答案 2 :(得分:3)
只是想补充一点,这有助于解决问题,因为“DependencyProperty.UnsetValue不是属性的有效值”错误已解决,特别是博客的第一部分暗示您的资源可能无效(即先前定义并可供使用)。事实证明,这是一个经典的问题,即没有在正确的范围内定义我的资源,而在实际调用之前。
我的建议:首先要确保在相应的Element.Resources部分中定义StaticResource。确保在实际调用资源之前,物理上定位了该定义。
答案 3 :(得分:3)
我建议您重新检查(两次或更多次)您的ResourceDictionary。我添加到ResourceDictionary之后出现了这个错误:
<Style TargetType="Label" x:Key="myLabel">
<Setter Property="Foreground" Value="{StaticResource myDefinedColor}"/>
...
</Style>
虽然{StaticResource myDefinedColor}
定义如下。在我的情况下,错误是关于具有UnsetValue的Foreground。所以实际上它确实是一个未设定的价值......
我将我的风格移动到下面定义我的颜色的标签,就是这样!