簡體   English   中英

如何自定義列表框當前選定項的顏色?

[英]How to customize the color of the currently selected item of a listbox?

這個問題源於我在 stackoverflow 中的最后一個問題。 自動滾動到特定項目的問題已解決,但現在我想將所選項目背景設置為透明或白色。 我怎樣才能做到這一點??

更新 1

<ListBox ItemsSource="{Binding SomeData}"
         SelectedIndex="{Binding SomeIndex}">
   <ListBox.ItemsPanel>
      <ItemsPanelTemplate>
         <WrapPanel Orientation="Vertical" />
      </ItemsPanelTemplate>
   </ListBox.ItemsPanel>
   <ListBox.ItemTemplate>
      <DataTemplate>
         <SomeChart DataContext="{Binding }" />
      </DataTemplate>
   </ListBox.ItemTemplate>
 </ListBox>

對於這個例子,我需要一種方法來自定義 selecteditem 顏色。

從窗口中的簡單列表框開始:

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
    xmlns:local="clr-namespace:WpfApplication1"
    Title="MainWindow"
    Width="525"
    Height="350">
<Window.DataContext>
    <local:ViewModel />
</Window.DataContext>
<Grid Name="LayoutRoot">
    <ListBox ItemsSource="{Binding Elements}"/>
</Grid>

在 ExpressionBlend 中選擇列表框:

在此處輸入圖片說明

然后在上級菜單中選擇“對象”並選擇:

在此處輸入圖片說明

這將創建一個新的 ListBoxItemStyle,對於新樣式,將創建一個基於原始樣式的新 ListBoxItem 模板。 在默認模板中,已經有一些邏輯可以根據觸發器和視覺狀態更改元素的視覺效果。 選擇元素時的視覺效果由觸發器驅動,您可以對其進行修改以滿足您的需要。

選擇視圖觸發器。 將有一些由“IsSelected”屬性驅動的觸發器。 在那里您可以更改項目被選中、選中和禁用等時的外觀。

在此處輸入圖片說明

只需從現有觸發器中選擇您想要的觸發器(例如,“IsSelected = True”)並使用 Blend 記錄修改模板元素的屬性。 默認情況下,有一些屬性更改針對“目標元素”,即模板本身,例如“前景”。 其他目標是模板的元素,如邊框“Bd”。

當然,您可以從頭開始創建 ListBoxItemStyle,但如果您只想進行簡單的更改,這種方式會更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM