Windows Universal App 8.1 自定义用户控件
Posted
技术标签:
【中文标题】Windows Universal App 8.1 自定义用户控件【英文标题】:Windows Universal App 8.1 Custom User Control 【发布时间】:2015-11-26 16:16:03 【问题描述】:在过去的两周里,我遇到了一个无法解决的问题。相信我,我一直在互联网上寻找答案,但没有找到任何解决方案,更不用说提示了。
我目前正在开发一个 Windows 8.1 通用应用程序。我开发了一种模式锁定控件(控件 A),类似于 android 设备中已知的那个。该控件由 9 个 点 组成,这些点由不同控件(控件 B)的实例表示。控件 A 和控件 B 都有自己的依赖属性。其中一些具有具体值(例如 StrokeBrushThickness="2"),而另一些则具有在应用资源中定义的值(例如画笔)。
我面临的问题是 Windows Phone 项目一切正常。但是,当我在 Windows 项目中引用控件 A 时,我收到以下 XAML 错误,因为 A 的依赖项属性具有具体值:
未知错误:找不到具有给定键的资源。
如果我从控件中删除上述属性,应用程序会编译但在运行时抛出 Windows.UI.Xaml.Markup.XamlParseException:
WinRT-Informationen:未能分配给属性
此外,对于我在应用程序中定义的一些资源,我收到以下 XAML 错误,例如:
<Color x:Key="ColorBackground">#F4F2F4</Color>
<SolidColorBrush x:Key="AppBackgroundBrush" Color="ThemeResource ColorBackground"/>
如果我删除控件 A 并将点控件 (B) 直接放入网格中,我可以让整个工作正常进行。但是,我希望避免这种解决方法,因为您可以将图像控件 A 封装在整个应用程序中重复需要的许多功能。
我希望我已经说清楚了。如果没有,我很乐意提供更多信息。
提前谢谢你!
【问题讨论】:
你总是使用ThemeResource
吗?如果是这样,您会将您的资源放在ResourceDictionary.ThemeDictionaries
中吗?
我尝试了两种方式 - 使用 ThemeResource
以及 StaticResource。好像没什么区别。
【参考方案1】:
可能您未能正确注册依赖项属性。
检查你传递给DependencyProperty.Register
方法的参数。
您可能从属性更改回调中抛出异常,您不应该这样做。
附:有时使用 Expression Blend 来编辑这些 XAML 会更容易。你会花一些时间学习,该工具不是针对程序员的;它是为设计师设计的,所以用户体验完全不同。但是,如果您花一些时间,您将不太可能遇到“找不到具有给定密钥的资源”之类的问题。
【讨论】:
我以这种方式注册了我的依赖属性:public static readonly DependencyProperty StrokeBrushProperty = DependencyProperty.Register("StrokeBrush", typeof(Brush), typeof(PatternLockControl), new PropertyMetadata(null));
我从不在属性更改回调中抛出任何异常。以上是关于Windows Universal App 8.1 自定义用户控件的主要内容,如果未能解决你的问题,请参考以下文章
在到达我的代码之前,应用程序在运行时崩溃 xcode6.1 Universal App Objective-C NSKeyedUnarchiver iOS 7.0 iOS 8.1
Windows Universal App 维护开放的 WebSocket
如何在 Windows Universal 10 App 中无异常地获取 StackTrace
在Windows 10 Universal App上添加Youtube嵌入视频
[原]Universal Windows问题:winapifamily问题:WINAPI_PARTITION_DESKTOP问题:WINAPI_PARTITION_APP问题:WINAPI_FAMIL