我有一個ListBox,其中Button和Textblock爲ItemTemplate。按鈕有一個onClick
事件。ListBox SelectedIndex始終是-1
我要的只是獲取點擊項目的索引,但我的ListBox中的SelectedIndex
屬性始終爲-1!
如何獲取點擊項目的索引?
我有一個ListBox,其中Button和Textblock爲ItemTemplate。按鈕有一個onClick
事件。ListBox SelectedIndex始終是-1
我要的只是獲取點擊項目的索引,但我的ListBox中的SelectedIndex
屬性始終爲-1!
如何獲取點擊項目的索引?
問題是,Button控件吞嚥鼠標事件以提供Click行爲,所以ListBox從不會收到任何事件來告訴它選擇已更改。
正如@Alexander所建議的那樣,您可以使用帶有命令的MVVM樣式方法來處理視圖模型中的操作並將數據上下文作爲參數傳遞。
或者,您可以將Button替換爲任何其他佈局控件,並使用來自Silverlight Toolkit的姿勢服務或使用常規的MouseLeftButtonUp
事件。在任何一種情況下,鼠標事件都會起泡並啓用ListBox來處理選擇。
您可能需要實際選擇在列表框中的東西,然後:對
如果你想獲得與當前的ListItem使用RouteCommand相關的數據對象。下面是例子
<ListView.ItemTemplate>
<DataTemplate>
<Button Margin="5,0" Command="{StaticResource ButtonCommand}"
CommandParameter="{Binding}">
</DataTemplate>
<ListView.ItemTemplate>
您也需要至少在ListView.Resources定義命令
<RoutedCommand x:Key="ButtonCommand"/>
然後設置類似的CommandBinding這
<ListView.CommandBindings>
<CommandBinding Command="{StaticResource ButtonCommand}" Executed="Button_Click"/>
</ListView.CommandBindings>
到底寫處理器
Button_Click(object sender, ExecutedRoutedEventArgs e)
{
e.Parameter// object that you Specified in CommandParameter
}
在advan您可以使用任何MVVM框架,在模型中定義所有命令和命令邏輯,然後將此命令綁定到相應的元素。
感謝yu很配!我只是刪除Button,並使用相同的代碼創建SelectionChanged事件)我是一個新的C#和發展,所以它對我來說是最邪惡的方式) – MCKool