none
ItemsControl 如何把里面的DataItem 设置Zindex? RRS feed

  • 问题

  •             <Style x:Key="AlbumPageViewStyle" TargetType="ItemsControl">
                    <Setter Property="Width" Value="1200"></Setter>
                    <Setter Property="Height" Value="540"></Setter>
                    <Setter Property="ItemsPanel">
                        <Setter.Value>
                            <ItemsPanelTemplate>
                                <WrapPanel></WrapPanel>
                            </ItemsPanelTemplate>
                        </Setter.Value>
                    </Setter>
                    <Setter Property="ItemTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <Grid Width="400" Height="180" loc:Behavior.IsLoad="{Binding RelativeSource={RelativeSource AncestorType=Page}, Path=DataContext.LoadCommand}">
                                    <Viewbox Margin="5">
                                        <ContentControl Content="{Binding Page1}"></ContentControl>
                                    </Viewbox>
                                </Grid>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
    这个是我的模版,我通过LoadCommand获取到了当前的Grid,并且在里面做一系列的操作
    其中有一个操作是 当鼠标点击Grid的时候
    void g_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                        Grid g = sender as Grid;
                        Canvas.SetZIndex(g, 1); //这句无效
                        startPoint = Mouse.GetPosition(this.pageSp);
                        g.VerticalAlignment = VerticalAlignment.Top;
                        g.HorizontalAlignment = HorizontalAlignment.Left;
                        TranslateTransform ttf = g.RenderTransform as TranslateTransform;
                        if (ttf == null)
                        {
                            ttf = new TranslateTransform(0, 0);
                            g.RenderTransform = ttf;
                        }
            }
    我也试过Panel.SetZIndex,等等,都不能实现我想要的效果
    2011年12月19日 13:42

答案

  • 你好 ge.lee,

    你想为ItemsControl里的item设置 Zindex 请试一下以下代码:

    ContentPresenter holder1 = ListControlName.ItemContainerGenerator.ContainerFromIndex(i) as ContentPresenter;

    Panel.SetZIndex(holder1, i & 10);

     


    Annabella Luo[MSFT]
    MSDN Community Support | Feedback to us
    • 已标记为答案 ge.lee 2011年12月23日 2:12
    2011年12月21日 8:10
    版主

全部回复

  • 你好 ge.lee,

    你想为ItemsControl里的item设置 Zindex 请试一下以下代码:

    ContentPresenter holder1 = ListControlName.ItemContainerGenerator.ContainerFromIndex(i) as ContentPresenter;

    Panel.SetZIndex(holder1, i & 10);

     


    Annabella Luo[MSFT]
    MSDN Community Support | Feedback to us
    • 已标记为答案 ge.lee 2011年12月23日 2:12
    2011年12月21日 8:10
    版主
  • 你好,我已经解决了

     

    需要拿到 ContentPresenter,不能直接拿DataTemplate里面的

    因为,默认给你包装了一层Contentpresenter

     

    2011年12月23日 2:12