2013-05-31 3 views
0

Я пытаюсь сделать кучу эллипсов с линиями, выходящими из центра, на север, восток, юг и запад.Холст Z Оформить заказ

Тем не менее, мне также нужны все эллипсы, которые должны быть сверху все линии, а не только поверх собственных линий.

С помощью следующего кода я не могу этого сделать, поскольку каждый шаблон элемента имеет свой собственный холст, поэтому настройка zindex не поможет.

Любые идеи о том, как я могу это решить?

<Window x:Class="WpfApplication27.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="800" Width="800"> 
    <ItemsControl ItemsSource="{Binding Nodes}"> 
     <ItemsControl.Template> 
      <ControlTemplate> 
       <Grid> 
        <Canvas Name="PART_Canvas" IsItemsHost="True"/> 
       </Grid> 
      </ControlTemplate> 
     </ItemsControl.Template> 

     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Canvas> 
        <Line X1="25" Y1="25" X2="25" Y2="125" Stroke="Black"/> 
        <Line X1="25" Y1="25" X2="25" Y2="-75" Stroke="Black"/> 
        <Line X1="25" Y1="25" X2="125" Y2="25" Stroke="Black"/> 
        <Line X1="25" Y1="25" X2="-75" Y2="25" Stroke="Black"/> 
        <Ellipse Width="50" Height="50" Fill="Red"/> 
       </Canvas> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 

     <ItemsControl.ItemContainerStyle> 
      <Style TargetType="ContentPresenter"> 
       <Setter Property="Canvas.Left" Value="{Binding X}"/> 
       <Setter Property="Canvas.Top" Value="{Binding Y}"/> 
      </Style> 
     </ItemsControl.ItemContainerStyle> 
    </ItemsControl> 
</Window> 

ответ

0

Вы можете добавить 2 ItemsCotrols друг на друг привязана к одной и той же коллекции, сзади один будет оказывать линии и передний один делает эллипс

<Grid> 
    <Grid.Resources> 
     <Style x:Key="NodeContainer" TargetType="ContentPresenter"> 
      <Setter Property="Canvas.Left" Value="{Binding X}"/> 
      <Setter Property="Canvas.Top" Value="{Binding Y}"/> 
     </Style> 
    </Grid.Resources> 

    <!--Line--> 
    <ItemsControl ItemsSource="{Binding Nodes}" ItemContainerStyle="{StaticResource NodeContainer}"> 
     <ItemsControl.Template> 
      <ControlTemplate> 
       <Grid> 
        <Canvas Name="PART_CanvasBack" IsItemsHost="True"/> 
       </Grid> 
      </ControlTemplate> 
     </ItemsControl.Template> 

     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Canvas> 
        <Line X1="25" Y1="25" X2="25" Y2="125" Stroke="Black"/> 
        <Line X1="25" Y1="25" X2="25" Y2="-75" Stroke="Black"/> 
        <Line X1="25" Y1="25" X2="125" Y2="25" Stroke="Black"/> 
        <Line X1="25" Y1="25" X2="-75" Y2="25" Stroke="Black"/> 
       </Canvas> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

    <!--Ellipse--> 
    <ItemsControl ItemsSource="{Binding Nodes}" ItemContainerStyle="{StaticResource NodeContainer}"> 
     <ItemsControl.Template> 
      <ControlTemplate> 
       <Grid> 
        <Canvas Name="PART_CanvasFront" IsItemsHost="True"/> 
       </Grid> 
      </ControlTemplate> 
     </ItemsControl.Template> 

     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Canvas> 
        <Ellipse Width="50" Height="50" Fill="Red"/> 
       </Canvas> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

</Grid> 
+0

Спасибо, это работает хорошо – pastillman

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