Ich habe in meiner Anwendung ein Enum innerhalb einer Klasse, die Klasse hat eine Property von diesem Enum-Typ
In meinem MainWindow möchte ich abhängig von der Property
Aktuell habe ich das so gelöst, dass ich einfach "alle drei" Button ins MainWindow einfüge und dann mit einem Converter entscheide, welcher Button gerade sichtbar ist.
Die Converter:
Spoiler anzeigen
Diese Lösung finde ich irgendwie eher suboptimal und bin nicht so ganz zufrieden damit.
Ich hatte auch schon über DataTemplates nachgedacht, komme da aber nicht wirklich zu einer Lösung.
Ich hänge noch Bilder an wie das ganze aussehen soll; und auch noch eine TestSolution die meinen aktuellen Stand vereinfacht zeigt.
Vielleicht hat ja jemand eine geniale Idee.
In meinem MainWindow möchte ich abhängig von der Property
ButtonTyp
entweder keinen, einen oder zwei Button darstellen.Aktuell habe ich das so gelöst, dass ich einfach "alle drei" Button ins MainWindow einfüge und dann mit einem Converter entscheide, welcher Button gerade sichtbar ist.
XML-Quellcode
- <Grid>
- .....
- <!--"dynamische" Darstellung-->
- <!--nur ein Button-->
- <Button Content="Eins von Eins"
- Visibility="{Binding RelativeSource={RelativeSource AncestorType={x:Type local:MainWindow}}, Path=MeinObjekt.ButtonTyp, Converter={StaticResource TypEinButtonToVisibility}}"/>
- <!--zwei Button-->
- <Grid Visibility="{Binding RelativeSource={RelativeSource AncestorType={x:Type local:MainWindow}}, Path=MeinObjekt.ButtonTyp, Converter={StaticResource TypZweiButtonToVisibility}}">
- <Grid.ColumnDefinitions>
- <ColumnDefinition/>
- <ColumnDefinition/>
- </Grid.ColumnDefinitions>
- <Button Content="Eins von Zwei" />
- <Button Grid.Column="1" Content="Zwei von Zwei" />
- </Grid>
- </Grid>
Die Converter:
C#-Quellcode
- public class ButtonTypEinButtonToVisibilityConverter : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- if (value.GetType() != typeof(MeinNamespace.MeineKlasse.NestedButtonTyp))
- return Visibility.Collapsed;
- return (MeinNamespace.MeineKlasse.NestedButtonTyp)value == MeinNamespace.MeineKlasse.NestedButtonTyp.EinButton ? Visibility.Visible : Visibility.Collapsed;
- }
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
- public class ButtonTypZweiButtonToVisibilityConverter : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- if (value.GetType() != typeof(MeinNamespace.MeineKlasse.NestedButtonTyp))
- return Visibility.Collapsed;
- return (MeinNamespace.MeineKlasse.NestedButtonTyp)value == MeinNamespace.MeineKlasse.NestedButtonTyp.ZweiButton ? Visibility.Visible : Visibility.Collapsed;
- }
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
Diese Lösung finde ich irgendwie eher suboptimal und bin nicht so ganz zufrieden damit.
Ich hatte auch schon über DataTemplates nachgedacht, komme da aber nicht wirklich zu einer Lösung.
Ich hänge noch Bilder an wie das ganze aussehen soll; und auch noch eine TestSolution die meinen aktuellen Stand vereinfacht zeigt.
Vielleicht hat ja jemand eine geniale Idee.