2

キャンバスにいくつかの画像コントロールを配置しています。z orderユーザーがアプリバーボタンをクリックしたときに、選択した画像コントロールのを変更したい。

私が持っているimage controlクラスで

    public int ImageZOrder 
    { 
        get
        {
            return _imageZOrder;            
        }
        set 
        {
            _imageZOrder = value;
            Canvas.SetZIndex(ImageControl, _imageZOrder);
        }

    }

そしてアプリバーで

    private void appBarFront_Click(object sender, EventArgs e)
    {
        currentCharObject.ImageZOrder += 1;
    }

選択した画像がすぐに他の画像コントロールの前面に表示されることを期待していました。ただし、上記のコードは機能しません。明らかに私は何かが欠けています。新しいzオーダー値を使用して、キャンバス上に画像コントロールを再描画する必要がありますか?

アップデート1

XAMLには次のものがあります。各画像は子として追加されましたcvsNote

    <Grid x:Name="GridCanvas" Grid.Row="0">
        <Canvas x:Name="cvsNote" />
    </Grid>

アップデート2 「画像コントロール」が特定のクラスに含まれていることを追加したいだけです。このクラスは、クラスの多くのプロパティの1つにすぎません。

4

2 に答える 2

2

コードでZIndexを変更できます。

このxamlを想定すると:

<Canvas Grid.Row="1" Tap="gridTapped">
    <Image x:Name="ImgA" Source="Assets/A.png" />
    <Image x:Name="ImgB" Source="Assets/B.png" />
    <Image x:Name="ImgC" Source="Assets/C.png" />
</Canvas>

次の方法で、一番上にある画像を変更できます。

private int TopZindex = 10;

private void gridTapped(object sender, GestureEventArgs e)
{
    var rand = new Random();
    switch (rand.Next(0, 3))
    {
        case 0:
            Canvas.SetZIndex(this.ImgA, ++TopZindex);
            break;
        case 1:
            Canvas.SetZIndex(this.ImgB, ++TopZindex);
            break;
        case 2:
            Canvas.SetZIndex(this.ImgC, ++TopZindex);
            break;
    }
}
于 2013-03-25T17:00:23.660 に答える
0

キャンバス内の子画像の順序を変更できます

<Canvas>
    <Image Name="a"/> 
    <Image Name="b"/> 
    <Image Name="c"/> 
</Canvas>

順序を変更する

<Canvas>
    <Image Name="c"/> 
    <Image Name="a"/> 
    <Image Name="b"/> 
</Canvas>

zオーダーを変更します。

これをコードで実行したい場合は、たとえば次のようにします。

List<Image> AllImages= new List<Image>();
...
Canvas.Children.Remove(img1); //This will remove img1, 
Canvas.Children.Add(img1);    //This will add img1 to the tail.
于 2013-03-25T15:39:27.253 に答える