2010-09-17 55 views
1

我正在使用兩個拖放列表框拖放拖放,其中用戶可以將項目從源列表框拖放到目標上。我爲ListBox控件的ListBoxItems使用DataTemplate。Silverlight 4和LisBox的SelectedItem當使用DataTemplate作爲ItemTemplate

我需要讓用戶能夠在從源移動目標列表框中向上/向下移動項目。我有兩個按鈕「上移」&「下移」來做到這一點,但是當用戶點擊其中一個按鈕時,它將null對象作爲selectedItem返回給我。

這裏是我的代碼

private void moveUp_Click(object sender, RoutedEventArgs e) 
    { 
     ListBoxItem selectedItem = lstmenuItems.SelectedItem as ListBoxItem; 

     if (selectedItem != null) 
     { 
     int index = lstmenuItems.Items.IndexOf(selectedItem); 


      if (index != 0) 
      { 
       lstmenuItems.Items.RemoveAt(index); 
       index -= 1; 
       lstmenuItems.Items.Insert(index, selectedItem); 
       lstmenuItems.SelectedIndex = index; 
      } 

     } 

    } 

我敢肯定,它與ItemTemplate中做。這裏是列表框

<ListBox x:Name="lstmenuItems" Height="300" MinWidth="200" > 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
        <StackPanel Orientation="Vertical"> 
         <TextBlock Text="{Binding Code}"/> 
         <TextBlock Text="{Binding RetailPrice, StringFormat=£\{0:n\}}" /> 
        </StackPanel> 
      <!-- Product Title--> 
      <TextBlock Text="{Binding Description1}" Width="100" Margin="2" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 

任何想法如何,我可以訪問所選擇的項目,我怎樣才能將其向上/向下的XAML?

在此先感謝

回答

1

selectedItem變量將包含空,因爲SelectedItem屬性不返回類型ListBoxItemSelectedItem屬性返回從集合中收到的對象的ItemsSource屬性。

更改爲: -

object selectedItem = lstmenuItems.SelectedItem; 

而且應該讓你遠一點。

這就是說考慮讓ItemsSource綁定到ObservableCollection並改爲操作集合。

+0

我已將它綁定到ObeservableCollection,但問題是它沒有排序。所以我想要的是在drop事件中通過集合,並通過放入列表中的訂單用戶進行排序。 – Jhelumi 2010-09-17 13:54:38

+1

@Jhelumi:如果您操作ObservableCollection(而不是綁定到它的ListBox),ListBox應該更改以反映集合中的更改。 – AnthonyWJones 2010-09-17 19:52:52

相關問題