Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

eatenbaog

Mitglieder
  • Registriert

  • Letzter Besuch

  1.    eatenbaog hat auf einen Beitrag in einem Thema reagiert: MacBook oder Windows Laptop für das Wirtschaftsinformatik Studium?
  2.    eatenbaog hat auf einen Beitrag in einem Thema reagiert: ToggleButton und MVVM
  3. eatenbaog hat auf Gewinde's Thema geantwortet in .NET
    Ich persönlich nutze ToggleButtons meist nur, um irgendwelche Properties meiner Entitäten auf True/False zu stellen. Alternativ so wie du schreibst, um irgendwelche Einstellungen im Bezug auf die UI auf True/False zu stellen. Eventuell würde einfach ein anderes Control für deinen Use-Case mehr Sinn machen, das kann ich dir aber vermutlich nicht beantworten, da ich deine Anwendung im Detail ja nicht kenne.
  4. eatenbaog hat auf Gewinde's Thema geantwortet in .NET
    Das sieht an sich schon mal ganz gut aus. So wie du das beschreibst, würde das auch mit den Boolean-Properties im ViewModel funktionieren. Ist wahrscheinlich nicht die schönste Lösung, da du für jeden Toggle eine Property benötigst und das if-else Konstrukt unschön wird, aber würde definitiv funktionieren. Dein Code müsste dann in etwa so aussehen: <Window.DataContext> <vm:UserViewModel/> </Window.DataContext> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <ListBox x:Name="LeftBox" Grid.Column="0" Margin="5" ItemsSource="{Binding DataList}"> </ListBox> <ListBox x:Name="RightBox" Grid.Column="1" Margin="5" ItemsSource="{Binding FiltererdDataList}"> </ListBox> <StackPanel Grid.Column="2"> <Button x:Name="Start" Content="Start" Height="30" Width="90" Margin="5" Command="{Binding StartAppCommand}"> </Button> <ToggleButton x:Name="ABCD" Content="ABCD" Height="30" Width="90" IsChecked="{Binding ABCDToggleState}" Command="{Binding FilterDataCommand}" CommandParameter="ABCD"> </ToggleButton> <ToggleButton x:Name="EFGH" Content="EFGH" Height="30" Width="90" IsChecked="{Binding EFGHToggleState}" Command="{Binding FilterDataCommand}" CommandParameter="EFGH"> </ToggleButton> <ToggleButton x:Name="IJKL" Content="IJKL" Height="30" Width="90" IsChecked="{Binding IJKLToggleState}" Command="{Binding FilterDataCommand}" CommandParameter="IJKL"> </ToggleButton> <ToggleButton x:Name="MNOP" Content="MNOP" Height="30" Width="90" IsChecked="{Binding MNOPToggleState}" Command="{Binding FilterDataCommand}" CommandParameter="MNOP"> </ToggleButton> </StackPanel> </Grid> </Window> internal class UserViewModel : NotifyPropertyChanged { public UserViewModel() { StartAppCommand = new RelayCommand((parameter) => StartApp()); FilterDataCommand = new RelayCommand((parameter) => { string x = (string) parameter; FilterData(x); }); } public ObservableCollection<FileInfo> DataList { get; set; } = new ObservableCollection<FileInfo>(); public ObservableCollection<FileInfo> FiltererdDataList { get; set; } = new ObservableCollection<FileInfo>(); public bool ABCDToggleState { get; set; } public bool EFGHToggleState { get; set; } public bool IJKLToggleState { get; set; } public bool MNOPToggleState { get; set; } public RelayCommand StartAppCommand { get; set; } public RelayCommand FilterDataCommand { get; set; } public RelayCommand RemoveDataCommand { get; set; } public void GetData() { } private void FilterData(string x) { ObservableCollection<FileInfo> NewList = new ObservableCollection<FileInfo>(); if (x == "ABCD" && ABCDToggleState) { NewList = FilterManager.AddData(DataList, FilterLibrary.FilterFile, x); } else if (x == "ABCD" && !ABCDToggleState) { FilterManager.RemoveData(FiltererdDataList, FilterLibrary.FilterFile, x); } //Hier dann noch weitere if/else Zweige für die anderen 3-ToggleButtons hinzufügen foreach(FileInfo file in NewList) { FiltererdDataList.Add(file); } } Persönlich würde ich das wahrscheinlich über die https://github.com/microsoft/XamlBehaviorsWpf Library umsetzen (Import über NuGet). Hier kannst du dann bei verschiedenen Events des ToggleButtons verschiedene Funktionen ausführen. Somit könnte man sich das if-else-Konstrukt sparen und auch die neuen Boolean-Properties würden wegfallen. Beispiel, wenn du die Library unter dem Alias 'i' im XAML-File eingebunden hast: <ToggleButton> <i:Interaction.Triggers> <i:EventTrigger EventName="Unchecked"> <i:InvokeCommandAction Command="TODO: Uncheck-Command ausführen" CommandParameter="TogglePARAM"/> </i:EventTrigger> <i:EventTrigger EventName="Checked"> <i:InvokeCommandAction Command="TODO: Check-Command ausführen" CommandParameter="TogglePARAM"/> </i:EventTrigger> </i:Interaction.Triggers> </ToggleButton> Eine dritte Option wäre, dass du den aktuellen State des ToggleButton mit ins VM übergibst. Dafür müsstest du aber einen MultiValueConverter schreiben, welcher dir zwei Eingaben in z.B. einen Tupel für das VM konvertiert. Praktisch der ToggleState und der ToggleControl-Name. Ist vermutlich bisschen aufwändiger. Hier wird das mit dem Multiconverter aber gut beschrieben: https://stackoverflow.com/questions/1350598/passing-two-command-parameters-using-a-wpf-binding
  5. eatenbaog hat auf Gewinde's Thema geantwortet in .NET
    Hi @Gewinde ich arbeite schon länger mit WPF, bin mir aber nicht ganz sicher, ob ich dein Problem richtig verstehe. Vielleicht könntest du noch etwas Code mit deinem derzeitigen Ansatz bzw. deiner derzeitigen Lösung ergänzen. In meinem Verständnis könntest du einfach bei deinen ToggleButtons den Command auf ein Command deines ViewModels binden und dort dann, je nachdem welcher ToggleButton geklickt wurde, dynamisch deinen FileName deiner Datei per CommandParameter übergeben. Das gebindete Command im ViewModel würde dann mit deinem übergebenem FileName entsprechend deinen Code ausführen. Hier ein Beispiel (wobei mir nicht ganz klar ist, wofür du die IsChecked-Property benötigst, deshalb habe ich die rausgelassen). WPF-Code (Hier könntest du ggfs. die FileNames-Property deiner Liste auch auf den CommandParameter binden, anstatt wie ich hier einen festen Parameter definieren.) : <ToggleButton Command="{Binding TestCommand}" CommandParameter="Test"> </ToggleButton> C# ViewModel-Code: private ICommand _testCommand; public ICommand TestCommand { get { _testCommand ??= new RelayCommand(param => testFunc(param as string)); return _testCommand; } } public void testFunc(string fileName) { Console.WriteLine(fileName); }

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.