Чтобы определить, почему код PHP не работает в коде JavaScript , нам нужно понять, что такое клиентский и серверный язык и как они работают.
Серверные языки (PHP и т. д.) : они извлекают записи из баз данных, поддерживают состояние через HTTP-соединение без состояния и выполняют много вещи, требующие безопасности. Они находятся на сервере, эти программы никогда не имеют своего исходного кода для пользователя
[/g16] image attr
Хотя с другой стороны Клиентский язык на стороне клиента (например, JavaScript) находится в браузере и запускается в браузере, Сценарии на стороне клиента обычно относятся к классу компьютерных программ в Интернете, которые выполняются на стороне клиента, в веб-браузере пользователя, а не на стороне сервера .
JavaScript отображается пользователю и может быть легко изменен, поэтому для обеспечения безопасности мы не должны полагаться на JavaScript.
Итак, когда вы делаете запрос HTTP на сервере, чем сервер, сначала внимательно читает файл PHP, чтобы узнать, есть ли какие-либо задачи, которые необходимо выполнить, и отправлять ответ на клиентскую сторону и снова, как @deceze сказал * Как только PHP закончил вывод ответа, сценарий заканчивается, и на сервере ничего не произойдет, пока не появится новый запрос HTTP . *
[/g17]
Итак, что мне делать, если мне нужно вызвать PHP? Это зависит от того, как вам это нужно: либо перезагружая страницу, либо используя вызов AJAX.
- Вы можете выполнить перезагрузку страницы и отправить запрос HTTP
- вы можете сделать вызов AJAX с помощью JavaScript, и это не требует перезагрузки страницы
Хорошо Чтение:
Я думаю, что вы спрашиваете, хотите ли вы создать код для файла ResourceDictionary. Вы можете это сделать полностью! Фактически, вы делаете это так же, как и для Window:
Скажите, что у вас есть ResourceDictionary, называемый MyResourceDictionary. В файле MyResourceDictionary.xaml поместите атрибут x: Class в корневой элемент следующим образом:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MyCompany.MyProject.MyResourceDictionary"
x:ClassModifier="public">
Затем создайте код за файлом MyResourceDictionary.xaml.cs со следующим объявлением:
namespace MyCompany.MyProject
{
partial class MyResourceDictionary : ResourceDictionary
{
public MyResourceDictionary()
{
InitializeComponent();
}
... // event handlers ahead..
}
}
И все готово.
== Обновление для приложений Windows 10 ==
И на всякий случай, когда вы играете с UWP есть еще одна вещь, о которой нужно знать:
<Application x:Class="SampleProject.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:rd="using:MyCompany.MyProject">
<!-- no need in x:ClassModifier="public" in the header above -->
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!-- This will NOT work -->
<!-- <ResourceDictionary Source="/MyResourceDictionary.xaml" />-->
<!-- Create instance of your custom dictionary instead of the above source reference -->
<rd:MyResourceDictionary />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
XAML предназначен для построения графов объектов, не содержащих код. Шаблон данных используется для указания того, как настраиваемый пользовательский объект должен отображаться на экране ... (например, если это элемент списка), поведение не является частью области знаний шаблона данных. Перерисовать решение ...
Gishu - пока это может показаться «вообще не поощряемой практикой». Вот одна из причин, по которым вы можете это сделать:
Стандартное поведение текстовых полей, когда они получают фокус, каретка должна быть размещена в том же положении, что и при контроле, теряющем фокус. Если вы предпочли бы во всем приложении, что когда пользователь вставляет в любое текстовое поле все содержимое текстового поля, то добавление простого обработчика в словарь ресурсов сделает трюк.
Любая другая причина, по которой вы хотите, чтобы поведение взаимодействия с пользователем по умолчанию было отличным от поведения вне коробки, кажется хорошим кандидатом на код в словаре ресурсов.
Полностью согласен с тем, что все, что конкретно связано с функциональностью приложения, не должно быть в коде для словаря ресурсов.
Я не согласен с «ageektrapped» ... использование метода частичного класса не является хорошей практикой. Какова была бы цель разделения словаря со страницы?
Из кода-кода вы можете получить доступ к элементу ax: Name, используя:
Button myButton = this.GetTemplateChild("ButtonName") as Button;
if(myButton != null){
...
}
Вы можете сделать этот в методе OnApplyTemplate, если вы хотите подключиться к элементам управления, когда пользовательский контроль загружается. OnApplyTemplate необходимо переопределить, чтобы сделать это. Это обычная практика и позволяет вашему стилю оставаться отключенным от элемента управления. (Стиль не должен зависеть от элемента управления, но элемент управления должен зависеть от стиля).
x:Class="MyCompany.MyProject.MySubFolder1.MyResourceDictionary"
В противном случае, если вы просто нажмете x: Class = & quot; MyResourceDictionary & quot ;, то анализатор xaml не найдет ваш класс. – viggity 11 February 2009 в 17:06