2016-04-14 59 views
0

C# içinde Wumpus World yapmaya çalışıyorum.Güncelleştirme UI UWP Sayfa Uygulaması

MainPage.xaml

<Page 
x:Class="MundoWumpus.SecondPage" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:MundoWumpus" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d"> 

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Padding="10"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 

    <TextBlock Text="Mundo de Wumpus" FontSize="30" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,10" /> 
    <ContentControl x:Name="myContent" HorizontalAlignment="Center" Grid.Row="1"/> 
</Grid> 

SecondPage.cs

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Runtime.InteropServices.WindowsRuntime; 
using Windows.Foundation; 
using Windows.Foundation.Collections; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls; 
using Windows.UI.Xaml.Controls.Primitives; 
using Windows.UI.Xaml.Data; 
using Windows.UI.Xaml.Input; 
using Windows.UI.Xaml.Media; 
using Windows.UI.Xaml.Navigation; 

// O modelo do item de página em branco está documentado em http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 

namespace MundoWumpus 
{ 
    /// <summary> 
    /// Uma página vazia que pode ser usada isoladamente ou navegada dentro de um Quadro. 
    /// </summary> 
    public sealed partial class SecondPage : Page 
    { 
     public SecondPage() 
     { 
      this.InitializeComponent(); 
     } 

     protected override void OnNavigatedTo(NavigationEventArgs e) 
     { 
      int size = (int)e.Parameter(); 

      World world = new World(size); 
      WorldCanvas wrldCanvas = new WorldCanvas(size); 
      myContent.Content = WrldCanvas; 
     } 
    } 
} 

CanvasWorld Tuval türeyen bir sınıf: Bunlar bazı sınıflardır. MainPage'den alınan bir parametreye (boyut) ihtiyaç duyduğundan, bunu SecondPage'de başlatmam gerekiyor. CanvasWorld (boyut), kareleri bir derece yapan bir metod kurucusudur. SecondPage'i nasıl güncelleyeceğimi bilmek istiyorum, çünkü wrldCanvas sonra başlatılıyor ve sayfada beliriyor ancak hizalanmıyor.

SecondPage Running

cevap

0

Sen OnNavigatedTo method geçersiz kılma hakkında haklısın, ama SecondPage gittiğinizde sizin OnNavigatedTo yöntem tetiklenir edilmeyecektir. Bu yöntem böyle olmalı

:

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    //your code here 
} 
+0

Gözlem için teşekkürler. Ama korunuyor. Sadece yanlış yazdım! –

+0

@ SérgioDamasceno , lütfen bu yöntemin parametresinin 'EventArgs e' değil' NavigationEventArgs e' olması gerektiğini unutmayın. –

0

sen zaten sahip olduğu yeni CanvasWorld nesneyi koymak istiyorum varsayarsak bir Canvas adlı wrldCanvas: çeşitli yaklaşımlar, en kolay muhtemelen ile tutucu Canvas yerine karıştığı vardır ContentControl gibi daha pratik bir şey, daha sonra Content özelliğini yeni CanvasWorld ürününüze ayarlayın.

Canvas ile XAML hattı böyle bir şey olarak değişmelidir:

<ContentControl x:Name="myContent" HorizontalAlignment="Center" Grid.Row="1"/> 

... ve arkada kodu:

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    int size = (int)e.Parameter; // Property, not method 

    World world = new World(size); // Not clear to me what this is or does? 
    myContent.Content = new CanvasWorld(size); 
} 

(Yan sorunu: Kodunuzda kullandığınız 'daki yerel değişkenin birinden biri için wrldCanvas adını, XAML'de bildirilen Canvas numaralı alana verdiğiniz alan adıyla aynı.Yan ne yasa dışı ne de (örneğin, alanıolarak referans alarak)), aklımda karışıklık için bir reçete. Yerel değişkenler alanları maskelemezse daha iyi olur ...)

+0

Önerileriniz için teşekkür ederiz. Kodumu geliştirmek için onları kullandım. –