• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

MVVM WPF SelectedIndex oraz TabControl

Aruba Cloud - Virtual Private Server VPS
0 głosów
454 wizyt
pytanie zadane 15 maja 2019 w C# przez DrajzleR Obywatel (1,380 p.)

Witam serdecznie. Mam problem z WPF i Tabcontrol. Mianowicie próbuję zrobić funkcjonalność która po kliknięciu na zakładce wyświetli komunikat czy na pewno chcesz zmienić zakładkę? Wszystko pięknie udało mi się zaimplementować i wygląda to tak. Jednak  tutaj pojawia się problem. Nie zależnie od tego co wybiorę i czy wartość zostanie ustawiona czy nie zakładka i tak zostaje przełączona. Czy ktoś może ma pomysł jak rozwiązać ten problem?

View

    <Grid>
        <TabControl SelectedIndex="{Binding TabIndex}">
            <TabItem Header="Red">
                <TextBlock Background="Red"/>
            </TabItem>
            <TabItem Header="Green">
                <TextBlock Background="Green"/>
            </TabItem>
            <TabItem Header="Blue">
                <TextBlock Background="Blue"/>
            </TabItem>
        </TabControl>
    </Grid>

Klasa logger

    class MessageService : ILogger
    {
        public bool Message(string msg)
        {
            return MessageBox.Show(msg, "Pytanie", MessageBoxButton.YesNo) == MessageBoxResult.No ? true : false;
        }

    }

 

ViewModel

    public class MainViewModel : ViewModelBase
    {
        private int _tabIndex;

        ILogger logger;

        public int TabIndex
        {
            get => _tabIndex;
            set
            {
                if (value == 1 && logger.Message("Czy na pewno chcesz przejść na zakładkę Green?"))
                {
                    return;
                }

                _tabIndex = value;
                RaisePropertyChanged(nameof(_tabIndex));

            }
        }

        public MainViewModel()
        {
            logger = new MessageService();
        }
    }

 

komentarz 16 maja 2019 przez NowyUrzydgownig Mądrala (5,090 p.)
https://stackoverflow.com/questions/5090392/wpf-tab-control-prevent-tab-change - poczytaj odpowiedzi, a zwłaszcza czwartą od końca.

1 odpowiedź

0 głosów
odpowiedź 16 maja 2019 przez Siemił Mądrala (7,380 p.)
wybrane 18 maja 2019 przez DrajzleR
 
Najlepsza
Zawsze ci zmieni, bo po kliknięciu w zakładkę lecą eventy, a dopiero później ustawia .SelectedIndex. Jeśli ma to być rozwiązanie MVVM to najpierw poczytaj o Command'ach. Następnie wrzuć w Header TabItemema Button  z Command'em, który będzie się pytał i zmieniał zakładkę.
komentarz 18 maja 2019 przez DrajzleR Obywatel (1,380 p.)
Był to strzał w dziesiątkę. Dziękuję bardzo za pomoc.Pozmieniałem marginesy zmieniłem trochę style buttona i wygląda jak oryginalna zakładka. W końcu uzyskałem efekt jakiego oczekiwałem. Mam odpowiedzialność każdej zakładki w osobnej metodzie.

Podobne pytania

0 głosów
1 odpowiedź 350 wizyt
pytanie zadane 15 marca 2017 w C# przez PejtaM Użytkownik (550 p.)
0 głosów
0 odpowiedzi 106 wizyt
pytanie zadane 3 czerwca 2019 w C# przez DrajzleR Obywatel (1,380 p.)
0 głosów
0 odpowiedzi 115 wizyt
pytanie zadane 3 czerwca 2019 w C# przez MalwinaJ Nowicjusz (120 p.)

93,335 zapytań

142,328 odpowiedzi

322,407 komentarzy

62,670 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...