看起來這將是一個普遍的問題...處理列表框中選擇項
我使用MVVM光
我在XAML
<ListBox ItemsSource="{Binding Events}" SelectedItem="{Binding SelectedEvent, Mode=TwoWay}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Tap">
<cmd:EventToCommand Command="{Binding EventPageCommand, Mode=OneWay}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="0,0,0,22">
<StackPanel>
<TextBlock Text="{Binding Name}" />
<TextBlock Text="{Binding Preview}" TextWrapping="Wrap"/>
</StackPanel>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
此定義的列表框作品一切都很好,除非用戶能夠點擊此列表下方,並且該活動仍然被解僱。
我可以修改它使用SelectionChanged
如:
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<cmd:EventToCommand Command="{Binding EventPageCommand, Mode=OneWay}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
不過,如果我使用返回按鈕,我不能因爲選擇並沒有實際改變兩次選擇相同的項目。我可能會進入我的代碼隱藏並在頁面加載時將選定的索引設置爲-1,但這看起來很詭異,而且我在很多地方使用了列表框,並且我不想記住要在任何地方進行這種攻擊。
任何想法?
編輯
我加了背景顏色爲我的列表框和列表框我的項目,而我的列表框項目只佔用文本所佔用的空間是什麼,列表框佔據整個屏幕,最後一個項目列表框下方延伸。也許有一種方法是支撐這個額外的空間。
更新
什麼似乎工作迄今最好的是設置VerticalAlignmnet="Top"
在列表框(這岸邊了底部的額外空間,不知道爲什麼,但隨後在列表的底部滾動結束,而不是屏幕的底部)。然後,我禁用滾動列表框本身ScrollViewer.VerticalScrollBarVisibility="Disabled"
,並將整個東西包裹在<ScrollViewer>
FWIW,我有一個類似的問題,並最終在事件處理程序中將SelectedIndex設置爲-1,然後導航到新頁面。 – Praetorian 2012-03-21 18:52:09