2013-11-15 125 views
2

我有一個ListBox的應用程序,它有一個圖像和文本框裏面。我想爲所選項目設置2種顏色和3種顏色。WP7列表框選擇的項目不會改變顏色

<ListBox.ItemTemplate> 
       <DataTemplate x:Name="Template1"> 
        <StackPanel Orientation="Horizontal" > 
         <Image Width="100" Height="100" Source="{Binding SmallImage}"></Image> 
         <Grid> 
          <TextBlock Text="{Binding Caption}" Foreground="{Binding txtColor}"></TextBlock> 
         </Grid> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 

當我改變前景顏色,然後選定的項目不會突出顯示(我保留它默認情況下)。 我試圖將事件添加到列表框,

private void DList_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     ListBoxItem selectedItem = DList.SelectedItem as ListBoxItem; 

     selectedItem.Foreground = new SolidColorBrush(Colors.Red); 

    } 

,但它顯示了一個例外: 的NullReferenceException 「使用‘new’關鍵字來創建一個對象實例」

+0

郵政我們請你怎麼定義在XAML ListBox中? –

回答

0

如果你要處理在SelectionChanged事件,那麼你不妨使用SelectionChangedEventArgs對象:

private void DList_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    var selectedDataObject = e.AddedItems[0]; // assuming single selection 
    ListBoxItem selectedItem = 
     ListBoxName.ItemContainerGenerator.ContainerFromItem(selectedDataObject); 
    selectedItem.Foreground = new SolidColorBrush(Colors.Red); 
} 
+0

ListBoxItem selectedItem = ItemContainerGenerator.ContainerFromItem(selectedDataObject); 它在此行上顯示錯誤: 非靜態字段需要對象引用。 也許有什麼其他的方式來改變高亮顏色? – Evilguy

+0

我在想ArrayList {public SolidColorBrush txtColor} 當我嘗試ListBox = ArrayList時,xaml中的值不是最新的.. – Evilguy

+0

對不起,我更新了代碼。嘗試命名你的'ListBox'並使用該名稱,如示例中所示。 – Sheridan