Tôi gặp sự cố khi đặt HighlightBrushKey
trong số SelectedItem
trong số Listbox
trong WPF. Ý định của tôi là thiết lập màu sắc của một Item tùy thuộc vào một giá trị Boolean đã cho, nằm trong mã.WPF Thay đổi ListboxItem Tô sáng màu khi được chọn
Tôi đã thử các bước sau:
Thực hiện một chuyển đổi, kiểm tra boolean và trở về đúng màu.
Ví dụ:
<ribbon:RibbonWindow.Resources> <l:WindowControl x:Key="ListBoxItemBackgroundConverter" /> <Style x:Key="listBoxStyle" TargetType="{x:Type ListBoxItem}"> <Style.Resources> <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="{Binding Source={x:Static SystemColors.HighlightBrushKey}, Converter={StaticResource ListBoxItemBackgroundConverter}}"/> <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="{Binding Source={x:Static SystemColors.ControlBrushKey}, Converter={StaticResource ListBoxItemBackgroundConverter}}"/> </Style.Resources> </Style> </ribbon:RibbonWindow.Resources>
Vấn đề ở đây là các phương pháp Chuyển đổi được gọi là chỉ một lần, nhưng tôi cần những Converter để được gọi mỗi khi tôi chọn một mục và kiểm tra Boolean. Giống như Trình kích hoạt, nhưng với "
HighlightBrushKey
".Chuyển đổi:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if(currentField == null) return Brushes.Yellow; if (currentField.Save) return Brushes.LightGreen; else return Brushes.Yellow; }
ý tưởng tiếp theo của tôi đã được thiết lập "
HighlightBrushKey
" thành "Transparent
" và thay đổiitem.Background
bằng tay trong mã. Vấn đề ở đây là các mặt hàng của tôi trở nên trắng và màu nền không thể được nhìn thấyVí dụ:
<ListBox.Resources> <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" /> <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" /> <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" /> </ListBox.Resources>
Cảm ơn trước! :)
Câu hỏi đầu tiên hay Andy, được xây dựng với các ví dụ chính xác về những gì bạn đang cố làm nổi bật! +1 – ThePower
@Andy CurrentField1 trong bộ chuyển đổi của bạn là gì? Làm thế nào bạn nhận được điều này trong Converter? Bạn có thể thử ràng buộc với 'currentField' (tức là YourViewModelProperty) trong kiểu vô hình được cung cấp không. – akjoshi
currentField là một đối tượng. Tên lớp là Trường và có Thuộc tính Boolean có tên "Lưu". làm thế nào tôi có thể liên kết với nó trong XAML? – Andy