GridView和项控件isSelected绑定到同一属性

时间:2014-11-24 16:17:38

标签: c# wpf mvvm binding datagrid

当我的DataGrids selectedItem和我的ListBox SelectedItem都绑定到同一个属性时,我看到了奇怪的行为。

我的支持集合是DataTable。我有一个DataGrid ItemSource绑定到DataTable。我还有一个ListView,其ItemSource绑定到同一个DataTable。一个视图是数据的网格显示,另一个视图基本上是在视觉上显示相同数据的时间线。我在画布上绘制项目,ItemsTemplateListViewItems。然后,我的视图模型中有一个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}"  />

0 个答案:

没有答案