2012-03-14 71 views
0

我正在開發我的第一個Windows Phone 7應用程序。我使用了Expression Blend 4來創建一個簡單的球賽。現在,我試圖做的是每次遊戲開始時隨機更改球的位置。如何在XAML中使用在c#中創建的隨機變量?

這是我在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

通過綁定,您可以引用頁面datacontext的屬性。你的情況最簡單的方法是,我認爲,讓你的頁面了自己的DataContext:

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

感謝KooKiz。這是我想要的。我對DataContext感到困惑。感謝您的簡單解釋:) – 2012-03-14 08:20:39

0

你應該能夠做這樣的事情:

創建一個屬性和一個成員變量。在MainPage的Load事件上調用RandomizeRandomNumber方法。

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綁定到路徑而不是ElementName。

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

旁註:我建議在開發WPF/Silverlight/WP7應用程序時使用MVVM模式。 :-)

+0

感謝Rupo您即時回覆,非常有幫助。 – 2012-03-14 08:22:50

相關問題