Değer < 0 olduğunda Kırmızı'yı ayarlamak için bir stil/tetikleyici oluşturmanın en iyi yolunu bulmaya çalışıyorum. Bunu yapmanın en iyi yolu nedir? DataTrigger'i kabul ediyorum, ama negatif değeri nasıl kontrol edebilirim, kendi IValueConverter'imi yaratmalı mıyım?WPF TextBlock Negatif Sayı Kırmızı Kırmızı
cevap
Eğer bir MVVM modeli kullanmıyorsanız (bir ForegroundColor özelliğiniz olabilir), o zaman yapmanız gereken en kolay şey, arka planınızı değerinize bağlamak için yeni bir IValueConverter oluşturmaktır. MyWindow.xaml yılında
:
<Window ...
xmlns:local="clr-namespace:MyLocalNamespace">
<Window.Resources>
<local:ValueToForegroundColorConverter x:Key="valueToForeground" />
<Window.Resources>
<TextBlock Text="{Binding MyValue}"
Foreground="{Binding MyValue, Converter={StaticResource valueToForeground}}" />
</Window>
ValueToForegroundColorConverter.cs
using System;
using System.Windows.Media;
using System.Windows.Data;
namespace MyLocalNamespace
{
class ValueToForegroundColorConverter: IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
SolidColorBrush brush = new SolidColorBrush(Colors.Black);
Double doubleValue = 0.0;
Double.TryParse(value.ToString(), out doubleValue);
if (doubleValue < 0)
brush = new SolidColorBrush(Colors.Red);
return brush;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
}
Sen ViewModel görünümünüzü belirli bilgiler. Ancak, ViewModel'deki Stil'e özgü bilgilerden kurtulabilirsiniz.
Dolayısıyla bool değeri
public bool IsMyValueNegative { get { return (MyValue < 0); } }
dönmek Ve ValueConverter ve boks/unboxing ortadan kaldırabilir böylece DataTrigger bunu kullanmak istiyorsunuz ViewModel bir özelliği oluşturun. = "TextBlock .Foreground" Değer = "Kırmızı"/
Bunun olacağını kabul etti Tercih edilir. Orijinal cevap, MVVM kullandığını söylemediğinden ve onun (benim için) ima etmediğinden kaynaklanıyor. –
Bu işe yarar, ama bunu yapmak istemiyorum, çünkü her TextBlock için her bir textblock için ayrı bir özelliğe ihtiyaç duyarım (her defasında 10+). –
Adlandırma kuralları hakkında sadece küçük bir nokta .. Uygulamalarım Bu tür bir xaml hack ile bu kadar dolu olsun. i.e: public bool DisplayBasketValueInRed {get; set; }. Ayrıca, bu özelliklerde INOTifyPropertyChanged öğesinin nasıl uygulanacağını azaltmak için genel bir sınıf (muhtemelen olmamalıdır) kullanıyorum. –
bana da uygulanabilecek bir genel (döküm gönderen) DataContextChanged olayı yazınız !. Teşekkürler! – tzippy
- 1. Düğüm-kırmızı
- 2. jQuery.css(), kenarlık rengini, kırmızı
- 3. yeşil ve kırmızı
- 4. phpStorm'daki kırmızı kenarlık nasıl kaldırılır?
- 5. Dalgalı kırmızı alt çizgi özelliğini
- 6. Mediawiki'de metin kırmızı nasıl yapılır?
- 7. Ürünlerdeki hedeflerim neden kırmızı renkte?
- 8. WPF TextBlock Binding
- 9. ithalat google-play-servis bağımlılık kırmızı çarpı
- 10. Jquery Doğrulama: Alanları nasıl kırmızı yapmak
- 11. Kırmızı renkte api ile veri nasıl alınır?
- 12. Metin üzerinde kırmızı underLine yazan metni düzenleyin
- 13. Eclipse'de kırmızı hata işaretleyicilerini kaldırabilir miyim?
- 14. Hatalar nasıl giderilir (kırmızı alt çizgiler) D2007
- 15. Kırmızı şapkalı python3-devel nasıl yüklenir 7
- 16. Sisteme erişme .Sıkı kırmızı renkli düğme rengi
- 17. Metin alanında doğrulama: vurgulanan kırmızı kenarlık, iPhone
- 18. Görüntünün kırmızı kanal rengi alanı nasıl alınır?
- 19. Vis.js Geçerli Zamana Odaklanma (Kırmızı Çizgi)
- 20. Firefox'taki kırmızı yazı tipi Page Source
- 21. Kırmızı siyah ağacın iç yol uzunluğu
- 22. Python & OpenCV kullanarak kırmızı renk bulma
- 23. STL'nin Kırmızı-Siyah Ağacı İç Uygulamasını Kullanma
- 24. Kırmızı döngü yapıları ne zaman yorum gerektirir
- 25. WPF DataGrid AutoSize Sayı
- 26. WPF - TextBlock - Biçim Metin Programlı
- 27. C# WPF - ScrollViewer + TextBlock sorunları
- 28. Android emülatörü: negatif sayı ekle?
- 29. TextBlock
- 30. Microsoft Word belgesindeki dalgalı kırmızı çizgileri VBA aracılığıyla nasıl programlayabilirim?
Bu çalışacak>
< Setter Mülkiyet: Amsakanna en çözüm için
–@LnDCobra: MVVM ile çalışacaktır. Wonko'nun düsündügü, MVVM ile bir ValueConverter kullanmak yerine viewmodelinizdeki bir ForegroundColor özelligini ortaya çikarabileceksinizdir. –
@Jakob: kesinlikle doğru. @LnDCobra: Önplan özelliği ile yukarıdaki gibi aynı ciltleme değerine ayarlanmış bir Stil uygulayabilirsiniz. –