Программирование >>  Программирование с использованием ajax 

1 ... 369 370 371 [ 372 ] 373 374 375 ... 396


public string Suit {

get { return (string)GetValue(SuitProperty); } set { SetValue(SuitProperty, value); }

public int Rank {

get { return (int)GetValue(RankProperty); } set { SetValue(RankProperty, value); }

public static bool ValidateSuit(object suitValue) {

string suitValueString = (string)suitValue;

if (suitValueString != Club && suitValueString != Diamond && suitValueString != Heart && suitValueString != Spade )

return false;

return true;

public static bool ValidateRank(object rankValue) {

int rankValueInt = (int)rankValue;

if (rankValueInt < 1 I I rankValueInt > 12)

return false;

return true;

private void SetTextColor () {

if (Suit == Club I I Suit == Spade ) {

RankLabel.Foreground = new SolidColorBrush(Color.FromRgb(0, 0, 0)); SuitLabel.Foreground = new SolidColorBrush(Color.FromRgb(0, 0, 0)); RankLabellnverted.Foreground = new SolidColorBrush(Color.FromRgb(0, 0, 0));

else {

RankLabel.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0)); SuitLabel.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0)); RankLabellnverted.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));

public static void OnSuitChanged(DependencyObject source, DependencyPropertyChangedEventArgs args)

((Card)source).SetTextColor();

4. Измените код в Windowl .xaml следующим образом:

<Window x:Class= Ch34Ex05.Windowl xmlns= http: schemas.microsoft.com/winfx/2006/xaml/presentation xmlns:x= http: schemas.microsoft.com/winfx/2006/xaml Title= Card Dealer Height= 600 Width= 800 >



<Grid Name= contentGrid MouseLeftButtonDown= Grid MouseLeftButtonDown MouseLeftButtonUp= Grid MouseLeftButtonUp MouseMove= Grid MouseMove > <Grid.Background>

<LinearGradientBrush EndPoint= 0.364, 0.128 StartPoint= 0.598, 1.042 > <GradientStop Color= #FF0D4FlA Offset= 0 /> <GradientStop Color= #FF448251 Offset= l /> </LinearGradientBrush> </Grid.Background> </Grid> </Window>

5. Измените код в Windowi. xaml. cs, как показано ниже:

public partial class Windowi : Window {

private Card currentCard;

private Point offset;

private Random random = new Random();

public Windowi() {

InitializeComponent();

private void Grid MouseLeftButtonDown(object sender, MouseButtonEventArgs e) {

if (e.Source is Card) {

currentCard = (Card)e.Source;

offset = Mouse.GetPosition(currentCard);

contentGrid.Children.Remove(currentCard);

else {

currentCard = new Card {

Suit = Card.Suits[random.Next(0, 4)], Rank = random.Next(1, 13)

currentCard.HorizontalAlignment = HorizontalAlignment.Left; currentCard.VerticalAlignment = VerticalAlignment.Top; offset = new Point (50, 75);

contentGrid.Children.Add(currentCard) ; PositionCard 0;

private void Grid MouseLeftButtonUp(object sender, MouseButtonEventArgs e) {

currentCard = null;

private void Grid MouseMove(object sender, MouseEventArgs e) {

if (currentCard != null) {

PositionCard 0;



private void PositionCard () {

Point mousePos = Mouse.GetPosition (this); currentCard.Margin =

new Thickness(mousePos.X - offset.X, mousePos.Y - offset.Y, 0, 0) ;

6. Запустите приложение. Для добавления случайных карт щелкайте на поверхности окна, а для перемещения карт щелкайте на них и перетаскивайте. При выполнении щелчка на существующей карте она должна начинать отображаться поверх всех остальных, как показано на рис. 34.19.

Щ Card DMtor


Рис. 34.19. Приложение Ch34Ex05 в действии

Описание полученных результатов

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

Элемент управления Card состоит в основном из кода, который должен выглядеть уже знакомо, благодаря коду, который приводился ранее в этой главе. В коде компоновки не используется ничего нового, хотя нельзя не заметить, что результат выглядит привлекательнее той неуклюжей кнопки, которая присутствовала в двух предыдущих примерах. Одной совершенно новой деталью при этом является то, что в данном элементе управления применяется немного кода для привязки данных. Привязка данных подразумевает связывание свойства элемента управления с источником данных и потому предусматривает массу различных приемов. WPF позволяет легко привязывать свойства к всевозможным источникам данных, вроде баз данных, коду XML и (как в этом примере) значений свойств зависимостей.



1 ... 369 370 371 [ 372 ] 373 374 375 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика