Как использовать случайную переменную, созданную в C # в XAML? - PullRequest
0 голосов
/ 14 марта 2012

Я работаю над своим первым приложением для Windows Phone 7. Я использовал Expression Blend 4, чтобы создать простую игру с мячом. Теперь я пытаюсь случайным образом менять положение мяча при каждом запуске игры.

Вот код, который я создал в файле CS для генерации случайного числа.

namespace Bouncing_Ball
{
    public partial class MainPage : PhoneApplicationPage
    {
        public int RandomNumber(int min, int max)
        {
            Random random = new Random();
            return random.Next(50, 350);
        }
        public MainPage()
        {
            InitializeComponent();
        }
    }
}

Теперь файл XAML содержит код.

<Ellipse x:Name="ellipse" Height="50" Canvas.Left="{Binding ElementName=RandomNumber}" Stroke="Black" Canvas.Top="217" Width="50">

это не работает. Я новичок в разработке Windows Phone 7, любая помощь будет оценена. Спасибо :)

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

С помощью Binding вы можете ссылаться на свойство текста вашей страницы. Я думаю, что самый простой способ в вашем случае - сделать вашу страницу своим собственным текстом данных:

namespace Bouncing_Ball
{
    public partial class MainPage : PhoneApplicationPage
    {
        public int RandomNumber { get; set; }

        public int GenerateRandomNumber(int min, int max)
        {
            Random random = new Random();
            return random.Next(min, max);
        }

        public MainPage()
        {
            this.RandomNumber = GenerateRandomNumber(50, 350);
            InitializeComponent();
            this.DataContext = this;
        }
    }
}

И XAML:

<Ellipse x:Name="ellipse" Height="50" Canvas.Left="{Binding Path=RandomNumber}" Stroke="Black" Canvas.Top="217" Width="50">
0 голосов
/ 14 марта 2012

Вы должны быть в состоянии сделать что-то вроде этого:

Создать свойство и переменную-член. Вызвать метод RandomizeRandomNumber для события Load главной страницы.

private int _randomNumber = 0;

public int RandomNumber
{
    get
    {
        return _randomNumber;
    }
    set
    {
        _randomNumber = value;
        RaisePropertyChanged(() => this.RandomNumber);
    }
}

public void RandomizeRandomNumber()
{
    Random rnd = new Random();
    RandomNumber = rnd.Next(50, 350);
}

Свяжите RandomNumber с путем, а не с именем элемента.

<Ellipse x:Name="ellipse" Height="50" Canvas.Left="{Binding Path=RandomNumber}" Stroke="Black" Canvas.Top="217" Width="50">

Sidenote: Я бы рекомендовал использовать шаблон MVVM при разработке приложений WPF / Silverlight / WP7. : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...