簡體   English   中英

在wp7中動態添加控件和手勢偵聽器

[英]Dynamically adding controls and gesture listener in wp7

我想在畫布控件中動態添加一些圖像或控件,對於每個控件,我都希望獲得其手勢事件。 我將如何獲得最佳方法。

void AddText()
        {
            TextBlock name = new TextBlock();
            name.Text = "This is text " + Count;
            Random rnd1 = new Random();
            name.Width = rnd1.Next(0, 400);
            name.Height = rnd1.Next(0, 800);
            var gl = GestureService.GetGestureListener(name);
            gl.Tap += new EventHandler<GestureEventArgs>(GestureListener_Tap);
            gl.Hold += new EventHandler<GestureEventArgs>(GestureListener_Hold);
            canvas1.Children.Add(name);
        }


private void GestureListener_Tap(object sender, GestureEventArgs e)
{
    MessageBox.Show("I Am Tapped");
}

private void GestureListener_Hold(object sender, GestureEventArgs e)
{
    MessageBox.Show("I Am Holded");
}

但是通過這種方式,即使我對寬度和高度使用隨機函數,我的所有控件也都放置在同一位置。 還有其他事情,當我點擊以這種方式創建的任何文本塊時。 它調用所有手勢事件。

與StackPanel不同,Canvas控件的行為類似於HTML / CSS中的絕對定位。 每個元素在頁面上都將具有其自己的特定位置。 元素處於絕對位置時,它們不會調整。 元素將重疊,而對其相鄰元素沒有任何定位相關的影響。

<Canvas>
  <Rectangle Fill="Red" Width="100" Height="100" Canvas.Top="100" Canvas.Left="100" />
  <Rectangle Fill="Orange" Width="100" Height="100" Canvas.Top="100" Canvas.Left="200" />
  <Rectangle Fill="Green" Width="100" Height="100" Canvas.Top="200" Canvas.Left="100" />
  <Rectangle Fill="Blue" Width="100" Height="100" Canvas.Top="200" Canvas.Left="200" />
</Canvas>

對於Canvas中的每個元素,您需要指定Canvas.Top和Canvas.Left屬性。 忽略這些值將導致您的元素位於“畫布”的左上角,位置0,0。

因此,您需要提供Left和Top屬性,如下所示,

Canvas.SetLeft(name, 50);
Canvas.SetTop(name, 100);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM