【发布时间】:2014-08-22 19:22:05
【问题描述】:
我有一个看起来像这样的 ListView,它控制在我的应用程序中打开哪个选项卡。
<ListView Grid.ColumnSpan="2" Grid.Row="1" SelectedItem="{Binding Path=SelectedSubstanceName}" Name="listView" ItemsSource="{Binding Path=Substances}" HorizontalAlignment="Stretch" Margin="2" VerticalAlignment="Stretch">
<ListView.ContextMenu>
<ContextMenu>
<MenuItem Header="Lägg till" Command="{Binding AddSubstanceCommand}"/>
<MenuItem Header="Ta bort" Command="{Binding RemoveSubstanceCommand}"/>
</ContextMenu>
</ListView.ContextMenu>
<ListView.ItemTemplate>
<DataTemplate>
<WrapPanel>
<TextBlock Text="{Binding Name}" FontWeight="Bold" />
</WrapPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我使用 SelectedSubstanceName 属性来检测要打开或切换到哪个选项卡(如果它已经打开)。
该属性如下所示:
private SubstanceName selectedSubstanceName;
public SubstanceName SelectedSubstanceName
{
get
{
return selectedSubstanceName;
}
set
{
selectedSubstanceName = value;
OnPropertyChanged("SelectedSubstanceName");
if (selectedSubstanceName != null)
{
if (!Tabs.Any(t => t.Identify(selectedSubstanceName.SubstanceNameID, typeof(SubstanceTabsViewModel))))
AddTab(selectedSubstanceName);
else
SelectedTab = Tabs.First(t => t.Identify(selectedSubstanceName.SubstanceNameID, typeof(SubstanceTabsViewModel)));
}
}
}
我无法涵盖的情况是当用户单击“someSubstance”时,打开相应的选项卡,用户将其关闭,并且仍然选择“someSubstance”。如果用户想再次打开它,他必须选择一些其他物质(然后将被打开),然后再次单击“someSubstance”。点击同一个ListViewItem是否也能触发属性?
我知道我可以在双击时添加事件,但理想情况下,我想避免事件和双击。
【问题讨论】: