Ich habe eine Gruppe von drei Optionsfeldern. Abhängig davon, welches Optionsfeld ausgewählt ist, möchte ich eines der drei Steuerelemente - ein Textfeld, eine Dropdown-Liste oder eine Schaltfläche - deaktivieren. Wie zeige ich Steuerelemente basierend auf dem Ergebnis eines ausgewählten Optionsfelds an?Anzeigen von Steuerelementen basierend auf ausgewähltem Optionsfeld
Antwort
Sie können die Sichtbarkeit der Steuerung an die IsChecked Eigenschaft des RadioButton- binden, die BooleanToVisibilityConverter
mit:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Page.Resources>
<BooleanToVisibilityConverter x:Key="convVisibility"/>
</Page.Resources>
<Grid>
<StackPanel Orientation="Vertical">
<RadioButton Name="radioButton1" GroupName="group1">Control1</RadioButton>
<RadioButton Name="radioButton2" GroupName="group1">Control2</RadioButton>
<RadioButton Name="radioButton3" GroupName="group1">Control3</RadioButton>
<Grid>
<Button Visibility="{Binding IsChecked, ElementName=radioButton1, Converter={StaticResource convVisibility}}">1. Button</Button>
<TextBlock Visibility="{Binding IsChecked, ElementName=radioButton2, Converter={StaticResource convVisibility}}">2. TextBlock</TextBlock>
<TextBox Visibility="{Binding IsChecked, ElementName=radioButton3, Converter={StaticResource convVisibility}}">3. TextBox</TextBox>
</Grid>
</StackPanel>
</Grid>
</Page>
EDIT:
, die Lösungen funktioniert super und es ist einfach zu implementieren. Kann ich irgendwie verhindern, dass die Steuerelemente im Design-Modus versteckt werden?
Ich weiß nicht, über andere Designer (Mischung zum Beispiel), aber in der Visual Studio-Designer werden die Kontrollen nie versteckt ...
Wie dem auch sei, könnten Sie Ihre eigene Konverter implementieren, die würden immer zurück Sichtbar im Entwurfsmodus. Aus irgendeinem obskuren Grund ist die BooleanToVisibilityConverter-Klasse versiegelt, sodass Sie sie nicht erben können. Sie können die Umwandlung in ein BooleanToVisibilityConverter stattdessen delegieren, wenn Sie die Konvertierungslogik neu zu schreiben nicht wollen:
public class MyBooleanToVisibilityConverter : IValueConverter
{
private BooleanToVisibilityConverter _converter = new BooleanToVisibilityConverter();
private DependencyObject _dummy = new DependencyObject();
private bool DesignMode
{
get
{
return DesignerProperties.GetIsInDesignMode(_dummy);
}
}
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (DesignMode)
return Visibility.Visible;
else
return _converter.Convert(value, targetType, parameter, culture);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return _converter.ConvertBack(value, targetType, parameter, culture);
}
#endregion
}
Um die Komponente zu halten sichtbar während der Entwurfszeit können Sie einen hinzufügen FallbackValue
von true
der Checkbox als:
<RadioButton x:Name="cbxEmail" Content="Email Details" IsEnabled="{Binding IsEmail, FallbackValue=true}" IsChecked="{Binding IsEmail, Mode=OneWay, FallbackValue=true}"
Grid.Column="2"/>
- 1. Datatables Sortierung basierend auf Optionsfeld und Kontrollkästchen
- 2. Wie aktiviert/deaktiviert Eingabefeld basierend auf Optionsfeld
- 3. Link-Taste mit ausgewähltem Optionsfeld in der Listenansicht
- 4. Liste aller Eigenschaftsnamen von Steuerelementen basierend auf Bedingung in C#
- 5. Zellenfarben für Arbeitsblattfunktion ausfüllen (basierend auf ausgewähltem Fall und Bereich)
- 6. Inhalt basierend auf Rollen anzeigen
- 7. Formularfelder basierend auf Benutzereingabe anzeigen
- 8. Dynamisches Zoomen des Bildes auf ausgewähltem Teil
- 9. HTML von ausgewähltem Text
- 10. D3 Ändern Sie die Farbe und Skalierung basierend auf Optionsfeld
- 11. Übergeben von Daten aus ListView-Steuerelementen
- 12. Verwenden Sie TinyInt zum Ausblenden/Anzeigen von Steuerelementen?
- 13. Einen Bericht basierend auf einer Formularanwendung anzeigen
- 14. Machen Sie nur eine von vielen Steuerelementen basierend auf dem Wert eines anderen Steuerelements sichtbar
- 15. anzeigen Formularfelder bedingt basierend auf Benutzereingaben
- 16. Anzeigen basierend auf Ergebnissen in Mysql Query
- 17. Wie Sie denselben Stil auf eine Gruppe von Steuerelementen basierend auf Bindungswert in DataTemplate anwenden?
- 18. Inhalt basierend auf Javascript-Cookies anzeigen
- 19. Anzeigen eines Gitters basierend auf Punktwolkendaten
- 20. verschiedene Bilder anzeigen, basierend auf Eigenschaftswert
- 21. Datum basierend auf den Gebietsschemaeinstellungen anzeigen
- 22. DIV-Inhalt ausblenden/anzeigen basierend auf URL
- 23. Popup-Fenster basierend auf verweisender URL anzeigen
- 24. Aktive Navigation basierend auf kontextabhängigen Daten anzeigen
- 25. BigCommerce Anzeigen verschiedener Bilder basierend auf SKU
- 26. Inhalt basierend auf der Situation anzeigen (Xamarin.Forms)
- 27. Nur Doppelte Datensätze basierend auf Kriterien anzeigen
- 28. "Related Posts" basierend auf ACF-Beziehungsfeld anzeigen
- 29. Anzeigen bestimmter Text basierend auf Datenauswahl
- 30. 5 Datenbankeinträge basierend auf dem Datum anzeigen
Diese Lösungen funktioniert gut und es ist einfach zu implementieren. Kann ich irgendwie verhindern, dass die Steuerelemente im Design-Modus versteckt werden? – DenaliHardtail
Ich habe meinen Beitrag aktualisiert, um diese Frage zu beantworten –