WrapPanel ItemsControl参考原始集合中的单个项目

时间:2014-01-15 04:45:38

标签: c# wpf data-binding event-handling itemscontrol

我正在制作一个房地产管理程序,在主页上,我在WrapPanel中列出了所有类似的属性:

Main Panel with Properties

现在,即使每个属性完全相同,也只是用于演示和测试多个属性。每个属性都是ObservableCollection属性中的一个不同的Property对象(对于名称的混淆而感到遗憾),如下面的c#代码所示:

public ObservableCollection<Property> Properties { get; set; }

// ...

Property defaultProperty = new Property(/*Lots of Stuff*/);
properties.Add(defaultProperty);
properties.Add(defaultProperty);
properties.Add(defaultProperty);
properties.Add(defaultProperty);
properties.Add(defaultProperty);
Properties = properties;

然后通过itemscontrol显示这些属性(属性属性的一部分(再次抱歉)),如下所示:

<ItemsControl x:Name="wPanel" ItemsSource="{Binding Properties}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel x:Name="PropertyPanel" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Border  Margin="5,5,5,5" BorderBrush="Red"  BorderThickness="1" HorizontalAlignment="Left" VerticalAlignment="Top">
                <Grid MinWidth="350" MouseLeftButtonUp="Grid_MouseLeftButtonUp">
                    // Column and Row Definitions
                    // ...
                    // Three other corners of the grid
                    <StackPanel Grid.Row="1" Grid.Column="1" VerticalAlignment="Bottom">
                        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="5,5,5,0" MouseLeftButtonDown="IssuesPanel_MouseLeftButtonDown" > // <-- This is the part I'm trying to get to work
                            <TextBlock Text="{Binding IssuesNum}" VerticalAlignment="Center"/>
                            <TextBlock Text=" Issues " VerticalAlignment="Center"/>
                            <Image VerticalAlignment="Center">
                                <Image.Source>
                                    <BitmapImage UriSource="/VentureVisions;component/warning.png" DecodePixelWidth="18" />
                                </Image.Source>
                            </Image>
                        </StackPanel>
                   </StackPanel>
                </Grid>
            </Border>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

我拿出了与此无关的部分。当用户点击右下方的问题面板时,我正在尝试打开一个关于属性问题的窗口。我已经设置了一个事件,但我需要能够获取Property对象以从中获取Problems集合以显示在窗口中。我希望这是有道理的。现在评论。但是,如何在单击按钮后知道如何引用用户正在与之交互的特定属性?谢谢。

1 个答案:

答案 0 :(得分:1)

从使用几种不同的口味回答这个问题,请参考以下主题:

  1. Binding to CurrentItem in a ItemsControl
  2. How to highlight selected item in ItemsControl?
  3. 希望那些帮助。

    如果您使用任何级别的数据绑定,为了进一步帮助您,您只需将“问题”图像交互绑定到“viewmodel”上的命令,在您的实例中,viewmodel将是属性对象。