none
为什么根Canvas没有在page.g.cs文件中声明? RRS feed

  • 问题

  • 必须自己在Page.xaml.cs中用((Canvas)this.FindName("parentCanvas"))来找到根Canvas,
    而在根Canvas下的其他元素就会自动在page.g.cs中被声明。
    不够方便。
    2008年1月22日 9:14

答案

  • 默认情况下,Page.xmal.cs中所有的成员和方法都定义在一个叫Page的class中。该对象中的this返回的就是根Canvas。

     

    让我们用如下代码做个小试验 : )

     

    在Page.xaml中加入如下代码:

    Code Snippet
    <
    TextBlock x:Name="tb" FontSize="20" Text="Hello"></TextBlock>

     

    在Page.xaml.cs中:

    Code Snippet

    public partial class Page : Canvas

    {

    int val;

    public void Page_Loaded(object o, EventArgs e)

    {

    // Required to initialize variables

    InitializeComponent();

    val = 0;

    this.KeyDown += new KeyboardEventHandler(onKeyDown);

    SolidColorBrush scb = new SolidColorBrush();

    scb.Color = Colors.Yellow;

    this.Background = scb;

    }

    void onKeyDown(object sender, KeyboardEventArgs e)

    {

    val++;

    tb.Text = val.ToString();

    SolidColorBrush scb = new SolidColorBrush();

    scb.Color = Colors.Red;

    this.Background = scb;

    }

    }

     

     

    编译运行,按主键盘看结果。 : )

    2008年1月25日 2:05

全部回复

  • Page_Loaded(object o, EventArgs e).

    I think both o and this in Page_Loaded refer to root canvas.

    2008年1月24日 13:43
  • 默认情况下,Page.xmal.cs中所有的成员和方法都定义在一个叫Page的class中。该对象中的this返回的就是根Canvas。

     

    让我们用如下代码做个小试验 : )

     

    在Page.xaml中加入如下代码:

    Code Snippet
    <
    TextBlock x:Name="tb" FontSize="20" Text="Hello"></TextBlock>

     

    在Page.xaml.cs中:

    Code Snippet

    public partial class Page : Canvas

    {

    int val;

    public void Page_Loaded(object o, EventArgs e)

    {

    // Required to initialize variables

    InitializeComponent();

    val = 0;

    this.KeyDown += new KeyboardEventHandler(onKeyDown);

    SolidColorBrush scb = new SolidColorBrush();

    scb.Color = Colors.Yellow;

    this.Background = scb;

    }

    void onKeyDown(object sender, KeyboardEventArgs e)

    {

    val++;

    tb.Text = val.ToString();

    SolidColorBrush scb = new SolidColorBrush();

    scb.Color = Colors.Red;

    this.Background = scb;

    }

    }

     

     

    编译运行,按主键盘看结果。 : )

    2008年1月25日 2:05
  • 谢谢两位,我疏忽了,应该是如此的。
    2008年1月25日 2:59