WPF'de Listbox
'un SelectedItem
'unun HighlightBrushKey
ayarıyla ilgili bir sorunum var. Amacım, bir Öğenin rengini, kodda yatan belirli bir Boole değerine bağlı olarak ayarlamaktı.WPF ListboxItem Değiştirme Seçildiğinde Rengi Vurgulayın
denedim aşağıdaki adımlar:
, bir dönüştürücü uygulanması boolean denetleme ve doğru rengi dönen.
Örnek:
<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>
sorun burada dönüştürme yöntemi yalnızca bir kez adını taşıdığını, ama Dönüştürücü ben bir öğe ve Boole kontrol seçmek her zaman çağrılacak gerekir. Bir Tetik gibi, ama "
HighlightBrushKey
" ile.Dönüştürücü:
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; }
Bir sonraki fikir "
HighlightBrushKey
" ayara "Transparent
" ve kod elleitem.Background
değişiyordu. Sorun burada eşyaları beyaz haline geldiğini ve Arka Plan RengiÖrnek görülemezdim: peşin
<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>
teşekkürler! :)
Güzel ilk soru Andy, vurgulamaya çalıştığınız tam olarak kesin örneklerle inşa edilmiş! +1 – ThePower
@Andy Dönüştürücünüzde currentField1 nedir? Bunu Dönüştürücüye nasıl alıyorsunuz? Sağlanan stilde "currentField" (yani YourViewModelProperty) öğesine bağlanmayı deneyebilirsiniz. – akjoshi
currentField bir nesnedir. Sınıf adı Alan'dır ve "Kaydet" adlı bir Boole Özelliğine sahiptir. XAML'de buna nasıl bağlanabilirim? – Andy