当我的DataGrids selectedItem
和我的ListBox SelectedItem
都绑定到同一个属性时,我看到了奇怪的行为。
我的支持集合是DataTable
。我有一个DataGrid
ItemSource
绑定到DataTable
。我还有一个ListView
,其ItemSource
绑定到同一个DataTable
。一个视图是数据的网格显示,另一个视图基本上是在视觉上显示相同数据的时间线。我在画布上绘制项目,ItemsTemplate
为ListViewItems
。然后,我的视图模型中有一个SelectedItem
属性,该属性绑定到两个集合SelectedItem
。所有这一切都运行正常,我在ListBox
中选择了DataGrid
中的一个,反之亦然。然后我在每个popup
上都有一个ListViewItem
,其isOpen
属性绑定到isSelected
的{{1}}属性,所以如果你点击ListboxItem
中的一个项目{1}}弹出窗口显示有关该项目的一些信息。
问题是,当我点击listbox
中的某个项目时,我可以看到DataGrid
中的相应项目正在被选中,但弹出窗口没有出现。奇怪的是,如果我在ListView
弹出窗口中向上或向下箭头确实出现,或者如果我单击并拖动我的鼠标在DataGrid
中上下选择行,则弹出窗口也会出现。但是,如果我单击DataGrid
中的单行,则弹出窗口不会出现,即使我可以直观地看到DataGrid
中的项目确实被选中。我认为单击单元格是以某种方式吃所选项目或东西,但我不确定。有点难过这个。希望我的描述有意义。
的ListView:(视图)
ListBox
DataGrid :(查看)
<ListView ItemsSource="{Binding Path=ResultsView}" SelectedItem="{Binding Path=SelectedEvent, Mode=TwoWay}" Background="Transparent" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas Background="Transparent" Width="Auto"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<Rectangle Width="5" Height="9" />
<Popup IsOpen="{Binding Path=IsSelected, Mode=OneWay, RelativeSource={RelativeSource AncestorType=ListViewItem}}" StaysOpen="False">
</Popup>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListView>
ViewModel属性:
<DataGrid ItemsSource="{Binding Path=ResultsView}" SelectionMode="Single" CanUserAddRows="False" CanUserSortColumns="true" CanUserDeleteRows="False" IsReadOnly="True"
SelectionUnit="FullRow"
SelectedItem="{Binding Path=SelectedEvent, Mode=TwoWay}" />