2015-09-01 2 views
0

В течение последних двух недель у меня есть проблема, которую я не могу решить. Поверьте мне, я искал ответы по всему Интернету, не найдя решения, не говоря уже о намеках.Windows Universal App 8.1 Пользовательский контроль пользователя

В настоящее время я работаю над Windows 8.1 Universal App. Я разработал контроль блокировки шаблонов (элемент управления A), аналогичный тому, который известен из устройств Android. Элемент управления состоит из 9 пунктов, которые представлены экземплярами другого элемента управления (элемент управления B). Контроль A, а также элементы управления B имеют собственные свойства зависимостей. Некоторые из них имеют конкретные значения (например, StrokeBrushThickness = "2"), в то время как другие имеют значение, определенное в ресурсах приложения (например, кисти).

Проблема, с которой я столкнулся, заключается в том, что все хорошо работает для проекта Windows Phone. Однако, когда я ссылаться управление А внутри проекта Windows, я получаю следующее сообщение об ошибке XAML для свойства зависимостей коэффициентов а, которые имеют конкретные значения:

Unknown error: Cannot find a resource with the given key.

Если удалить вышеупомянутые свойства из управления, приложение компилируется, но бросает Windows.UI.Xaml.Markup.XamlParseException во время выполнения:

WinRT-Informationen: Failed to assign to property < PROPERTY NAME >

Кроме того, я получаю следующее сообщение об ошибке XAML за некоторые ресурсы я, определенные в приложении, например:

<Color x:Key="ColorBackground">#F4F2F4</Color> 
<SolidColorBrush x:Key="AppBackgroundBrush" Color="{ThemeResource ColorBackground}"/> 

Я могу получить все, чтобы работать, если я удалю элемент управления A и поставлю элементы управления точкой (B) прямо в сетку. Однако я надеюсь избежать этого обходного пути, так как вы можете управлять изображением. A инкапсулирует множество функций, которые необходимо повторно использовать в приложении.

Надеюсь, я убедился. Если нет, я буду более чем счастлив предоставить дополнительную информацию.

Спасибо заранее!

+0

Вы всегда используете 'ThemeResource'? Если вы разместите свои ресурсы в «ResourceDictionary.ThemeDictionaries»? –

+0

Я пробовал в обоих направлениях - используя 'ThemeResource', а также StaticResource. Кажется, это не имеет значения. – Zettel

ответ

0

Возможно, вы не смогли правильно зарегистрировать свои свойства зависимостей. Проверьте параметры, которые вы передаете методу DependencyProperty.Register.

Возможно, вы выбрали исключение из вашего измененного обратного вызова, вы не должны этого делать.

P.S. Иногда проще использовать Expression Blend для редактирования этих XAML. Вы потратите некоторое время на обучение, инструмент не нацелен на программистов; это для дизайнеров, поэтому пользовательский интерфейс совершенно другой. Однако, если вы потратите некоторое время, очень маловероятно, что вы столкнетесь с такими проблемами, как «Невозможно найти ресурс с данным ключом».

+0

Я зарегистрировал свои свойства зависимостей следующим образом: 'public static readonly DependencyProperty StrokeBrushProperty = DependencyProperty.Register (« StrokeBrush », typeof (Brush), typeof (PatternLockControl), новый PropertyMetadata (null));' Я никогда не бросаю никаких исключений изнутри свойство изменило обратный вызов. – Zettel

Смежные вопросы