2016-04-01 5 views
1

Я новичок в xaml и windows app dev так извините, если этот вопрос может показаться глупым.Кто вызывает VisualStateManager.GoToState за кулисами?

Я создал текстовое поле, а в дизайнере я щелкнул правой кнопкой мыши и выбрал edit template => отредактировал копию и поместил ее в свой пользовательский словарь.

В шаблоне управления для этого текстового поля я видел визуальные состояния, такие как отключенные, сфокусированные и так далее. И я изменил их и запустил мобильное приложение и заметил, что мои изменения работают, как изменение цвета границы при сосредоточении текстового поля.

Но для того, чтобы это работало кто-то должен позвонить

VisualStateManager.GoToState("Focused")

, когда текстовое поле ориентировано так, кто звонит, потому что я не вижу каких-либо визуальных переходов в шаблоне элемента управления, так как это это происходит?

ответ

1

Код в самом элементе управления вызывает VisualStateManager.GoToState (...).

Когда вы начинаете внедрять свои собственные элементы управления, вы можете подписаться на события, которые у вас есть, и состояния перехода на основе вашей собственной логики. Ниже приведен пример пользовательского элемента управления со своими двумя настраиваемыми состояниями.

https://github.com/xyzzer/WinRTXamlToolkit/blob/master/WinRTXamlToolkit/Controls/WatermarkTextBox/WatermarkTextBox.cs

1

XAML - это скомпилированный язык, и если вы внимательно посмотрели, что происходит под капотом, это то, что класс за вашим xaml имеет то же пространство имен, что и ваш xaml-код.

Это означает (для практической цели), что компиляция вашей программы превращает все эти XAML в код C#, а затем переходит к MSIL и в конечном итоге выполняется как двоичная программа.

Значительная часть изменений состояния, которые происходят, основаны на событиях, а TextBox, как и все другие пользовательские элементы управления, будет передавать сообщение и прослушивать сообщения. Страница, которая содержит TextBox, вероятно, будет той, которая передает изменение состояния всякий раз, когда один из его детей получает фокус, и как хороший контроль, TextBox слушает это событие и реагирует на него.

+0

Но если я хочу, чтобы создать пользовательский шаблон и передавать эти сообщения, как я буду делать так ?? –

+0

Пользовательский шаблон, как и все другие XAML, скомпилирован. Пользовательский шаблон - это не что иное, как сочетание уже существующих элементов управления, и у всех из них есть своя служба обмена сообщениями, уже работающая для вас. –

+0

не предполагаю, что я хочу, чтобы при нажатии кнопки и изменении цвета фона кнопки, и я хочу реализовать все это в xaml, используя технологию обмена сообщениями, и сказал, как это сделать? –

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

  • Нет связанных вопросов^_^