Ich habe ein WPF-Fenster, das nur eine ComboBox (Dropdown-Liste) hat. Wenn ich Index 1 (zweites Element in der Dropdown-Liste) wähle, wie kann ich dieses WPF-Fenster so erweitern, dass mehr Schaltflächen, Textfelder usw. angezeigt werden? Müsste ich die selectedIndex-Eigenschaft verwenden? Wenn ja, wie mache ich das Fenster in XAML erweitern.Wie erweitert man ein WPF-Fenster für eine bestimmte Bedingung?
Antwort
Ich habe in der Vergangenheit eine IValueConverter
verwendet, um dies zu erreichen. Hier ist ein Beispiel Konverter:
public class MyConverter : System.Windows.Data.IValueConverter {
public object Convert (object value , Type targetType , object parameter , CultureInfo culture) {
if (value == null)
return System.Windows.Visibility.Hidden;
if (parameter == null)
return System.Windows.Visibility.Hidden;
if (value.ToString().Equals (parameter))
return System.Windows.Visibility.Visible;
return System.Windows.Visibility.Hidden;
}
public object ConvertBack (object value , Type targetType , object parameter , CultureInfo culture) {
throw new NotImplementedException ();
}
}
Was das bedeutet, es nimmt den Wert, der an sie übergeben wird, erwarte ich eine Reihe wie die SelectedIndex eines Artikel Kontrolle. Ich vergleiche es dann mit dem übergebenen Parameter. Wenn sie gleich sind, gebe ich Visibility.Visible zurück. In allen anderen Fällen gebe ich Visibility.Hidden zurück.
Jetzt können Sie das nehmen und es in die XAML wie dieser Stecker:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:MyConverter x:Key="vConv"/>
</Window.Resources>
<Grid>
<ComboBox x:Name="comboBox" HorizontalAlignment="Left" Margin="25,52,0,0" VerticalAlignment="Top" Width="120">
<ComboBoxItem>Hidden</ComboBoxItem>
<ComboBoxItem>Visible</ComboBoxItem>
</ComboBox>
<Label x:Name="label" Content="Label" HorizontalAlignment="Left" Margin="219,92,0,0" VerticalAlignment="Top" Visibility="{Binding ElementName=comboBox, Path=SelectedIndex, Converter={StaticResource vConv}, ConverterParameter=1, UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
</Window>
Sie können sehen, dass wir eine Instanz unserer MyConverter Klasse in den Window.Resources erstellt. Wenn wir dies in unserer Bindung verwenden, können wir meine Beschriftung basierend auf dem ausgewählten Index anzeigen/ausblenden. Jetzt ist dies sehr einfach und Sie können eine Menge hinzufügen, um alle Funktionen zu bekommen, die Sie benötigen, damit Sie beginnen können.
Sie können die Eigenschaft MaxHeight
und MaxWidth
des Fensters für die Auswahl des Elements comboBox verwenden. Wie folgt aus:
On Selection Change-Ereignis von combobox.Use dieses
MainWindow obj= new MainWindow();
if(mycombobox.SelectedIndex==0)
{
obj.MaxWidth="600";
obj.MinWidth="600";
}
if(mycombobox.SelectedIndex==1)
{
obj.MaxWidth="200";
obj.MinWidth="200";
}
oder Sie können auch dieses tun
if(mycombobox.SelectedIndex==0)
{
this.MaxWidth="600";
this.MinWidth="600";
}
if(mycombobox.SelectedIndex==1)
{
this.MaxWidth="200";
this.MinWidth="200";
}
- 1. Wie r Rang für eine bestimmte Bedingung?
- 2. Wie wählt man eine bestimmte Option, wenn eine Bedingung existiert
- 3. Wie man eine Django-Funktion automatisiert, wenn ein Django-Modellfeld eine bestimmte Bedingung erfüllt
- 4. Wie eine Bedingung für ein Auswahlfeld setzen
- 5. Regex ersetzen für bestimmte Bedingung
- 6. , die eine bestimmte Bedingung erfüllt
- 7. ExtJS6: Wie man ein Paket erweitert Ext.field.TextArea
- 8. Wie erweitert man ein Array in Swift?
- 9. Wie erweitert man eine Klasse in Python?
- 10. Java, wie man eine versteckte Klasse erweitert
- 11. Wie stoppt man den Thread für eine bestimmte Bedingung in jmeter?
- 12. Einstellen der Farben für bestimmte Stäbe, die eine Bedingung erfüllen
- 13. Wie man eine Funktion in der jQuery .on() Funktion beendet, wenn eine bestimmte Bedingung erfüllt ist
- 14. Mysql - Wählen Sie aus zwei Spalten für eine bestimmte Bedingung
- 15. MySQL-Gruppe durch Abfrage für bestimmte Bedingung
- 16. Wie erweitert man Python Enum?
- 17. Eine bestimmte Bedingung wird in JavaScript übersprungen
- 18. Wie fügt man eine 'oder' Bedingung in #ifdef ein
- 19. Wie man eine Verkäufermodell-abstrakte Klasse in eine Entität erweitert
- 20. Wie man Datenmodell mit neuer Methode erweitert?
- 21. R - Conditional Lagging - Wie verzögert man eine bestimmte Anzahl von Zellen, bis eine Bedingung erfüllt ist?
- 22. Wie man ein Programm stoppt, bis eine bestimmte Aktion passiert
- 23. Ruby: eine Klasse, die ein Modul erweitert
- 24. Wie erweitert man ein jquery Ui Widget? (1.7)
- 25. Wie testet man ein DAO, das SqlMapClientDaoSupport erweitert
- 26. Zend - wie man das Layout für eine bestimmte Aktion deaktiviert?
- 27. Wie speichert man einen Attributwert für eine bestimmte Geschäftsansicht?
- 28. Wie kann man die Intervallpräferenz für eine bestimmte Distribution finden?
- 29. Wie überprüft man, ob ein Objekt eine bestimmte Methode hat?
- 30. Wie überprüft man, ob ein TextView eine bestimmte Zeichenfolge enthält
Statt des großen weißen leeren Raum in der linken Seite, ist es eine Möglichkeit, das Fenster tatsächlich zu vergrößern, um es zu erweitern? Zum Beispiel, wenn das Fenster ursprünglich 100 mal 100 war und ein Combo-Element angeklickt wurde, kann ich das Fenster auf 100 um 300 ändern? – tralifa
@tralifa Sie müssen über Storyboard und Animationen in WPF für das lesen. – niksofteng