WPF uygulamasında bir Düğme ve bir TextBox var. Kullanıcı, TextBox'ta bir metin girinceye kadar Düğmeyi etkinleştirilmemiş duruma nasıl getirebilirim?WPF'de devre dışı bırakma düğmesi mi?
cevap
Bu yapmalıyım:
<StackPanel>
<TextBox x:Name="TheTextBox" />
<Button Content="Click Me">
<Button.Style>
<Style TargetType="Button">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Binding="{Binding Text, ElementName=TheTextBox}" Value="">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</StackPanel>
TextBox
'da TextChanged
etkinliğine abone olabilir ve metin boşsa Button
'u devre dışı olarak ayarlayın. Veya Button.IsEnabled
özelliğini TextBox.Text
özelliğine bağlayabilir ve herhangi bir metin varsa ve aksi takdirde yanlış olduğunda döndüren bir dönüştürücü kullanabilirsiniz.
WPF hayır t pencereleri alışkanlıklar oluşturur ... – msfanboy
MVVM yılında (wich bir çok şey çok daha kolay hale getirir - bunu denemelisiniz) Eğer TextBox bağlı olduğu için ViewModel Text
iki özelliklere sahip ve olurdu Eğerdönmek nerede olduğunu
<Button Command="Apply">Apply</Button>
ICommand
arayüzü Yöntem CanExecute
vardır: Eğer düğme bağlı olduğu (veya benzeri) bir iCommand özelliği Apply
olurduif (!string.IsNullOrWhiteSpace(this.Text)
. Geri kalanlar sizin için WPF tarafından yapılır (etkinleştirmek/devre dışı bırakmak, tıklamadaki gerçek komutu yürütmek). Bağlantılı makalede ayrıntılı olarak anlatılmaktadır.
Bunun diğer gönderiler kadar zarif olmadığını biliyorum, ancak aynı şeyin nasıl gerçekleştirileceğine dair daha basit bir xaml/codebehind örneğidir.
Xaml:
<StackPanel Orientation="Horizontal">
<TextBox Name="TextBox01" VerticalAlignment="Top" HorizontalAlignment="Left" Width="70" />
<Button Name="Button01" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10,0,0,0" />
</StackPanel>
CodeBehind: XAML ile
btn_edit.IsEnabled = true;
: koduna göre
Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
Button01.IsEnabled = False
Button01.Content = "I am Disabled"
End Sub
Private Sub TextBox01_TextChanged(ByVal sender As Object, ByVal e As System.Windows.Controls.TextChangedEventArgs) Handles TextBox01.TextChanged
If TextBox01.Text.Trim.Length > 0 Then
Button01.IsEnabled = True
Button01.Content = "I am Enabled"
Else
Button01.IsEnabled = False
Button01.Content = "I am Disabled"
End If
End Sub
Windows 8 beta, bunu başarmanın tek yolu olacak. En azından bugün için. –
<Button Content="Edit data" Grid.Column="1" Name="btn_edit" Grid.Row="1" IsEnabled="False" />
- 1. Formunu devre dışı bırakma Düğmesi
- 2. TinyMCE devre dışı bırakma devre dışı bırakma
- 3. Anahtar düğmesi - kaydırma işlevini devre dışı bırakma
- 4. WPF DataGrid Düğmesi Sütun Devre Dışı Bırakma
- 5. Açısal2 ve devre dışı bırakma düğmesi istisnası
- 6. Taşımacıyı devre dışı bırakma
- 7. UIPickerView devre dışı bırakma
- 8. Devre Dışı Bırakma CodeRush
- 9. CollapsingToolbarLayout'u devre dışı bırakma
- 10. düğmesi devre dışı bırakılmıyor
- 11. Önyükleme sırasında varsayılan devre dışı bırakma düğmesi nasıl etkinleştirilir?
- 12. Gönderme düğmesi başarılı olduktan sonra bazı denetimleri devre dışı bırakma
- 13. Bir Android Düğmesi metninin stilini devre dışı bırakma
- 14. ListView'ü Devre Dışı Bırakma ViewPager
- 15. Yerel olarak devre dışı bırakma
- 16. Grails eklentisini devre dışı bırakma
- 17. smarty bildirimini devre dışı bırakma
- 18. VB6: Devre dışı bırakma varyantları
- 19. TabLayout'taki Sekmeleri Devre Dışı Bırakma
- 20. ListView'da Dalgalanmayı Devre Dışı Bırakma
- 21. HikariPool günlüğünü devre dışı bırakma
- 22. Marketplace'i Eclipse'den Devre Dışı Bırakma
- 23. Kopyalama devre dışı bırakma dojo.dnd
- 24. CSS kurallarını devre dışı bırakma
- 25. Javafx TextInputDialog Tamam düğmesi devre dışı bırak
- 26. Sayım, sınırlama ve devre dışı bırakma
- 27. Devre dışı bırakma listesinde devre dışı bırakılan öğe
- 28. Kereviz Çalışanı Başlatma Metni Devre Dışı Bırakma
- 29. MBProgressHUD UITableViewController ile etkileşimi devre dışı bırakma
- 30. Java Graphics xor modunu devre dışı bırakma
ViewModel'de doğrulama işlemini yapmak çok daha şık. Yazılan Josh Smith bitbonk makalesine bir göz atın. –
@Helge Klein, Kesinlikle katılıyorum, ama OP MVVM kullandığını belirtmediği için ve tanıdık değilse ona geçmenin önemsiz olduğunu düşündüğümde, sadece en basit şekilde yanıtlayacağımı düşündüm mümkün moda –
Anladım. Sadece daha karmaşık bir çözüm varsa, gelecekteki okuyucuları "daha iyi" ye işaret etmek istedim. –