Bir ControlTemplate aracılığıyla tanımlanmış bir TextBox var. ControlTemplate nedeniyle, TextBox, IsEnabled özelliği false olarak ayarlandığında otomatik olarak grileştirilmez. BackgroundConcept devre dışı bırakılmış bir TextBox
Bu işlevselliği sağlamak için, ben ControlTemplate Aşağıdaki tetiği kullanın:<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{x:Static SystemColors.GrayTextBrush}" />
</Trigger>
Bu iyi çalışır. Ancak, aynı zamanda BackgroundColor'u da ayarlamak zorundayım ama SystemColors
'da karşılık gelen bir girdi bulamadım. Engelli kontrollerin (TextBoxes) arka planı için hangi giriş doğru girilir? SystemColors'tan başka bir kaynak var mı?
Sabit bir değer kullanmak istemiyorum. Örneğin. Background="#f4f4f4"
ayarı, bazı ortamlarda, devre dışı bırakılmış arka planın başka bir değere sahip olduğundan ve kontrolümün gerektiği gibi görünmediğinden veya hatta okunamadığından (örneğin, GrayTextBrush değeri # f4'ün yakınındaysa) endişeleniyorum.
+1 Teşekkürler. İlginç bir yazı, ancak benim soruma cevap bulunamadı. Bir şeyi özledim mi? – HCL
Arka planınız için sabit bir değer kullanmak yerine, bir SystemColors değeri kullanmak ister misiniz? Varsayılan XAML stillerine bakarak, Microsoft'un SystemColors.ControlBrushKey değerini devre dışı bırakılan denetimler için arka plan rengi olarak kullandığı anlaşılmaktadır. Bu renk, SystemColors.GrayTextBrush ile kontrast olmalıdır, böylece kullanıcı, kontrol devre dışı bırakıldığında değeri okuyabilecektir. Mükemmel bir cevap için –
+1. Uygulama çalışırken, kullanıcı Windows temasında rengi değiştirirse uygulama otomatik olarak renk değiştirir, böylece DynamicResource kullanımı dikkat edin. –