【问题标题】:Windows Universal App 8.1 Custom User ControlWindows Universal App 8.1 自定义用户控件
【发布时间】: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。好像没什么区别。

标签: c# windows windows-runtime windows-phone


【解决方案1】:

可能您未能正确注册依赖项属性。 检查你传递给DependencyProperty.Register方法的参数。

您可能从属性更改回调中抛出异常,您不应该这样做。

附:有时使用 Expression Blend 来编辑这些 XAML 会更容易。你会花一些时间学习,该工具不是针对程序员的;它是为设计师设计的,所以用户体验完全不同。但是,如果您花一些时间,您将不太可能遇到“找不到具有给定密钥的资源”之类的问题。

【讨论】:

  • 我以这种方式注册了我的依赖属性:public static readonly DependencyProperty StrokeBrushProperty = DependencyProperty.Register("StrokeBrush", typeof(Brush), typeof(PatternLockControl), new PropertyMetadata(null)); 我从不在属性更改回调中抛出任何异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多