WPF Combobox Sachen anzeigen lassen

  • WPF

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    WPF Combobox Sachen anzeigen lassen

    Meun Leute,

    meine Frage ist wie schaffe ich es mit dem Selecteditem mehrer sachen anzuzeigen. Ich will will halt bestimmte buttons oder andere comboboxen anzeigen lassen von meiner ersten combobox doch ich kriege es nur hin eine sache davon anzuzeigen zu lassen, wie kann ich mehrere sachen in Selecteditem hinzuzufügen ?


    C# code

    C#-Quellcode

    1. namespace combo
    2. {
    3. /// <summary>
    4. /// Interaktionslogik für MainWindow.xaml
    5. /// </summary>
    6. public partial class MainWindow : Window
    7. {
    8. public MainWindow()
    9. {
    10. InitializeComponent();
    11. DataContext = new PersonViewModel();
    12. }
    13. }
    14. public class PersonViewModel : INotifyPropertyChanged
    15. {
    16. public List<string> things { get; } = new List<string> { "btn1", "btn2", "test2" };
    17. private string _btn1;
    18. public string BTN1
    19. {
    20. get { return _btn1; }
    21. set
    22. {
    23. if (value != _btn1)
    24. {
    25. _btn1 = value;
    26. OnPropertyChanged(nameof(BTN1));
    27. OnPropertyChanged(nameof(MyButtonVisibilitybtn1));
    28. }
    29. }
    30. }
    31. public Visibility MyButtonVisibilitybtn1 => BTN1 == "btn1"
    32. ? Visibility.Visible
    33. : Visibility.Hidden;
    34. // Other properties
    35. private string _btn2;
    36. public string BTN2
    37. {
    38. get { return _btn2; }
    39. set
    40. {
    41. if (value != _btn2)
    42. {
    43. _btn2 = value;
    44. OnPropertyChanged(nameof(BTN2));
    45. OnPropertyChanged(nameof(MyButtonVisibilitybtn2));
    46. }
    47. }
    48. }
    49. public Visibility MyButtonVisibilitybtn2 => BTN2 == "btn2"
    50. ? Visibility.Visible
    51. : Visibility.Hidden;
    52. private string _test2;
    53. public string Test2
    54. {
    55. get { return _test2; }
    56. set
    57. {
    58. if (value != _test2)
    59. {
    60. _test2 = value;
    61. OnPropertyChanged(nameof(Test2));
    62. OnPropertyChanged(nameof(MycomboVisibilitytest2));
    63. }
    64. }
    65. }
    66. public Visibility MycomboVisibilitytest2 => Test2 == "test2"
    67. ? Visibility.Visible
    68. : Visibility.Hidden;
    69. public event PropertyChangedEventHandler PropertyChanged;
    70. private void OnPropertyChanged(string propertyName)
    71. {
    72. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    73. }
    74. }
    75. }






    XML-Quellcode

    1. <Window x:Class="combo.MainWindow"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    5. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    6. xmlns:local="clr-namespace:combo"
    7. mc:Ignorable="d"
    8. Title="MainWindow" Height="450" Width="800">
    9. <Grid>
    10. <ComboBox x:Name="test1" HorizontalAlignment="Left" Margin="116,96,0,0"
    11. VerticalAlignment="Top" Width="120"
    12. ItemsSource="{Binding things}"
    13. SelectedItem="{Binding BTN1 }"
    14. />
    15. <Button Content="btn1" HorizontalAlignment="Left" Margin="116,164,0,0"
    16. VerticalAlignment="Top" Width="75"
    17. Visibility="{Binding MyButtonVisibilitybtn1}"
    18. />
    19. <Button Content="btn2" HorizontalAlignment="Left" Margin="209,164,0,0"
    20. VerticalAlignment="Top" Width="75"
    21. Visibility="{Binding MyButtonVisibilitybtn2}"
    22. />
    23. <ComboBox x:Name="test2" HorizontalAlignment="Left" Margin="312,96,0,0"
    24. VerticalAlignment="Top" Width="120"
    25. Visibility="{Binding MycomboVisibilitytest2}"
    26. />
    27. </Grid>
    28. </Window>


    *Codeformatierung hinzugefügt - Bitte das nächste mal darauf achten* ~NoFear23m

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()

    Hallo

    Ich denke du willst auf ein DataTemplate hinaus?

    Schau dir mal mein Tutorial an. Insbersonders das Kapitel über DataTemplates

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    okay danke schonmal aber geht das nicht einfacher muss ich nicht eigentlich eine Public class erstellen wo ich meine public stings einfüge und dann das in selected item reintuhen, hab das auch versucht aber das klappt nicht es gibt doch ein einfacheren weg hier oder ?
    Hallo

    Man merkt das du dir das nichtmal angesehen hast. Denn ob es nun über ein DataTemplate gemacht wird oder direkt bleibt ja gleich, die Funktionsweise von Binding und SelectedItem ist immer die selbe. Über ein DataTemplate ist man allerdings flexibler und der XAML ist aufgeräumter.
    Du hast es gerade mal überflogen und fertig.

    Was gibt es einfacheres als folgendes?

    XML-Quellcode

    1. <StackPanel>
    2. <ComboBox Margin="10" ItemsSource="{Binding AllTransports}" SelectedItem="{Binding SelectedTransport}" DisplayMemberPath="Caption"/>
    3. <ContentControl DataContext="{Binding SelectedTransport}" Margin="30">
    4. <StackPanel>
    5. <Label Content="{Binding Caption}"/>
    6. <Label Content="{Binding Weight}"/>
    7. <Label Content="{Binding TopSpeed}"/>
    8. <Label Content="{Binding Cylinders}"/>
    9. <ListBox Margin="15" Background="AliceBlue" ItemsSource="{Binding Equipment}" DisplayMemberPath="Caption"/>
    10. </StackPanel>
    11. </ContentControl>
    12. </StackPanel>


    Das ist tragisch?

    Anbei für die Copy&Paste fraktion:
    Dateien
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##