2011-02-02 4 views
1

Как установить ZIndex для UserControl? Я попыталсяНастройка Silverlight ZIndex of UserControl

Canvas.SetZIndex((Tile)sender, 99); 
((Tile)sender).SetValue(Canvas.ZIndexProperty, 99); 

Плитка имя моего UserControl У меня есть прямоугольник внутри UserControl, который является то, что на самом деле появляется на экране. Я также попытался

Edit:

Вот что XAML для моего UserControl

<UserControl x:Class="Carcassonne.Tile" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    d:DesignHeight="76" d:DesignWidth="76"> 

    <Canvas x:Name="LayoutRoot" Background="Transparent"> 
     <Rectangle x:Name="rect" 
        Width="76" Height="76" 
        HorizontalAlignment="Left"> 
      <Rectangle.Fill> 
       <ImageBrush x:Name="tileImage"> 
        <ImageBrush.RelativeTransform> 
         <RotateTransform x:Name="rotation" CenterX="0.5" CenterY="0.5" Angle="0" /> 
        </ImageBrush.RelativeTransform> 
       </ImageBrush> 
      </Rectangle.Fill> 
     </Rectangle> 
    </Canvas> 
</UserControl> 
+0

Вы управляете пользователем, находящимся внутри панели холста? Относительно того, что вы пытаетесь установить zIndex? Другими словами, можете ли вы предоставить код XAML вашей разметки? –

+0

@Pavlo Glazkov Да, элемент управления пользователя находится внутри панели Canvas. У меня много пользовательских элементов управления, и мне нужно установить их Z-индекс относительно основного холста или друг к другу. Посмотрите мои изменения в моем открытии. – Arizona1911

ответ

1

Вот некоторые предположения:

  • У вас есть некоторые внешний UserControl или Page.
  • Этот внешний UserControl содержит холст.
  • Этот холст в свою очередь имеет несколько прямых детей, которые являются экземплярами вашего управления Carcassonne.Tile.
  • Вы прикрепляете обработчик событий к каждому фрагменту «Левое нажатие мыши», в котором вы хотели бы перенести плитку на верх.

Существо дело код, который вы уже использовали должно работать: =

Canvas.SetZIndex((Tile)sender, 99); 

За исключением случаев, вы нажимаете на другие плитки, они тоже в конечном итоге с 99 Z-Index. Что вам нужно, так это совместить последнее значение Zindex, а затем увеличивать и использовать его значение каждый раз, когда происходит событие.

Этот ответ, вероятно, не помогает из-за всех допущений, которые могут быть ошибочными. Если бы вы могли быть более наглядными в своем вопросе, можно было бы найти более подходящий ответ.

+0

Все ваши предположения верны. Когда кнопка мыши нажата, я устанавливаю ZIndex активного фрагмента на 99. Когда кнопка мыши отпущена, я устанавливаю ZIndex равным 98. «Активная» плитка всегда должна быть сверху. Это тот эффект, за которым я иду, но код, который я опубликовал, не делает этого трюка. – Arizona1911

+0

@ Arizona1911: Согласно всей информации, которую вы предоставили до сих пор, она должна. Следовательно, есть еще информация, которую у вас есть, а мы нет. Только вы знаете, что это может быть. – AnthonyWJones

Смежные вопросы