Handycontrols WPF库提供了一个名为NumericUpDown的控件,它是一个数字字段,带有一个用于增加和减少值的按钮。
我做了一个从这个控件派生出来的控件,叫做TuggableUpDown。我希望用户能够点击并拖动箭头来上下滚动值,类似于Unity 3D这样的软件。
我创建了派生类:
public class TuggableUpDown : NumericUpDown
{
}
现在我想为这个类创建一个样式。因为这个样式做了NumericUpDown样式应该做的所有事情,所以我想以这个样式为基础。因为我想让这个样式成为默认样式,所以我在Generic.xaml中定义了它。
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:local="clr-namespace:MyLibrary"
xmlns:hx="clr-namespace:MyLibrary.HandyExtensions"
xmlns:interactivity="clr-namespace:HandyControl.Interactivity;assembly=HandyControl">
<Style TargetType="{x:Type local:TuggableUpDown}" BasedOn="{hc:StaticResource NumericUpDownBaseStyle}">
<Setter Property="Background" Value="Blue"/>
</Style>
但是当我加载控件时,这会引发一个错误。
System.Windows.Markup.XamlParseException:'' Provide value on 'HandyControl.Themes.StaticResourceExtension' throughed an exception.'行号'10'和行位置'52'.' Inner Exception Exception:找不到名为“NumericUpDownBaseStyle”的资源。资源名称区分大小写。
我在同一个资源字典中的其他地方使用了**hc:**命名空间(尽管不是作为'BasedOn'参数)。NumericUpDownBaseStyle确实是我尝试使用的样式的键,甚至可以通过自动完成显示。为什么它不能被解析?
1条答案
按热度按时间nmpmafwu1#
解决方案似乎是将Handycontrols的主题字典合并到我的generic.xaml字典中。
我仍然不知道为什么需要这样做,特别是当我引用hc时:命名空间在另一个模板中位于这个控件的下面,到目前为止还没有引起问题。这也不是我认为命名空间的工作方式:为什么我需要将内容合并到字典中,并在xaml中导入名称空间?我在网上找不到任何解释这种奇怪行为的东西。