Создать кнопку с помощью XAML
Простой пример создания графического компонента для расширения языка XAML.
В языке XAML есть элемент Button, но этот, кажется, не является частью Silverlight, по крайней мере, в версии 1.0, и поэтому не может использоваться для веб-приложения. На самом деле можно было бы использовать элемент HTML <input type = «button»>, но в этом случае приложение будет работать только с браузером.
Чтобы иметь кнопки, общие для веб-приложений и локальных приложений, можно также нарисовать собственные кнопки.
Drawinger кнопка
Возвращаем код прямоугольника к скругленным краям:
<Rectangle Canvas.Top="4" Canvas.Left="4" Height="20" Width="80" Fill="LightGray" Stroke="Black" StrokeThickness="1" RadiusX="4" RadiusY="4" />
Получается рамка кнопки ниже:
Чтобы украсить кнопку, необходимо удалить свойство цвета и открыть более сложный тег. При преобразовании свойства в тег цвет можно задать с помощью тега SolidColorBrush:
<Rectangle.Fill>
<SolidColorBrush Color="LightGray" />
</Rectangle.Fill>
Картина остается прежней:
Теперь добавляем цветовой градиент, светлый в верхнем левом углу, темный в противоположном углу:
<Rectangle.Fill>
<LinearGradientBrush >
<GradientStop Color="White" Offset="0.0" />
<GradientStop Color="LightGray" Offset="0.20" />
<GradientStop Color="Gray" Offset="0.9" />
<GradientStop Color="LightGray" Offset="0.20" />
</LinearGradientBrush>
</Rectangle.Fill>
Добавить текст
Чтобы добавить текст, который нельзя сделать в прямоугольнике, мы создадим внутренний Canvas, и именно в этом Canvas мы выровняем Rectangle и TextBlock.
<Canvas>
<Canvas>
<Rectangle Canvas.Top="4" Canvas.Left="4" >
</Rectangle>
<TextBlock Canvas.Left="14" Canvas.Top="6">
Click
</TextBlock>
</Canvas>
</Canvas>
Кнопка с меткой:
Определение взаимодействия
Для добавления управления действиями пользователя создаются функции JavaScript, связанные с Canvas нашей кнопки.
Когда мышь :
- переключается на кнопку (MouseEnter), появляется черная рамка,
- и исчезает при выходе из поверхности (MouseLeave).
- При нажатии кнопки (MouseLeftButtonDown) кнопка на экране смещается, выполняется действие, в данном случае в нашем примере появляется сообщение, после чего кнопка снова становится нормальной.
- при отпускании кнопки мыши (MouseLeftButtonUp) или после выполнения действия кнопка возвращается в нормальное положение.
<Canvas MouseLeftButtonDown="javascript:buttonDown" MouseLeftButtonUp="javascript:buttonUp" MouseEnter="javascript:buttonEnter" MouseLeave="javascript:buttonLeave" >
Чтобы сдвинуть кнопку на страницу и имитировать нажатую кнопку, Canvas кнопки, которая содержит и прямоугольник, и текст, смещается.
Для этого нам придется использовать новое свойство RenderTransform, позволяющее выполнять различные преобразования на объекте, но здесь все, что нас интересует, - это перемещение координат.
Для этого мы даем тегу имя, «addoffset», которое будет использоваться в коде JavaScript.
<Canvas.RenderTransform>
<TransformGroup>
<TranslateTransform x:Name="addoffset" X="0" Y="0"/>
</TransformGroup>
</Canvas.RenderTransform>
Вы можете нажать кнопку ниже:
Полные файлы
- Код XAML.
- Код JavaScript.