代码之家  ›  专栏  ›  技术社区  ›  Jens

将选择框添加到ItemsControl中?

  •  0
  • Jens  · 技术社区  · 16 年前

    我有一个带有Canvas ItemPanel的WPF ItemsControl。从内部源绘制,它显示许多自动生成的矩形。

    到目前为止,它看起来是这样的:

    <Window    
    // .. NameSpaces
      >
      <Window.Resources>
        <DataTemplate x:Key="binTemplate">
          <Rectangle x:Name="Rect" VerticalAlignment="Bottom"
                     Canvas.Left="10" StrokeThickness="0">
            // .. Databinding Height, Width, etc
          </Rectangle>
        </DataTemplate>
      </Window.Resources>
      <DockPanel x:Name="LayoutRoot" LastChildFill="True">
          <ItemsControl
              ItemsSource="{Binding Bins}"
              ItemTemplate="{StaticResource binTemplate}">
            <ItemsControl.ItemsPanel>
              <ItemsPanelTemplate>
                <Canvas MouseDown="Canvas_MouseDown" MouseMove="Canvas_MouseMove" MouseUp="Canvas_MouseUp">
                  <Rectangle x:Name="Selection" Canvas.Left="0" Canvas.Top="0" Visibility="Hidden" />
                </Canvas>
              </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
          </ItemsControl>
      </DockPanel>
    </Window>
    

    我试着将这个框添加到itemscontrolpaneltemplate中,并用Canvas鼠标事件来控制它,但似乎我不被允许这样做。错误消息是“无法显式修改用作ItemsControl的ItemsPanel的面板的子集合。ItemsControl为面板“”生成子元素

    提前谢谢!

    1 回复  |  直到 16 年前
        1
  •  2
  •   Thomas Levesque    16 年前

    而不是将选择框添加到 Canvas ,您应该将其添加为 Adorner 超过 . 检索 AdornerLayer 画布 ,您可以使用 AdornerLayer.GetAdornerLayer 画布 在一个 AdornerDecorator 使用它的 装饰层 财产。