Wpf меняет xaml, когда изменяется объект для привязки - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь получить из своей базы данных один элемент, и при нажатии на кнопку «Следующий» или «Предыдущий» я бы хотел получить следующий элемент из своей базы данных, увеличив его ID. У меня уже есть мой первый элемент в моей карточке, но когда я нажимаю на предыдущий или следующий, ничего не происходит. У меня в xaml:

   <smtx:XamlDisplay Key="cards_1"  Margin="4 4 0 0">
            <materialDesign:Flipper Style="{StaticResource MaterialDesignCardFlipper}">
                <materialDesign:Flipper.FrontContent>
                    <Grid Height="350" Width="200">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="250" />
                            <RowDefinition Height="*" />
                        </Grid.RowDefinitions>
                        <materialDesign:ColorZone Mode="PrimaryMid" VerticalAlignment="Stretch">
                            <materialDesign:PackIcon Kind="AccountCircle" Height="128" Width="128"
                                                             VerticalAlignment="Center" HorizontalAlignment="Center" />
                        </materialDesign:ColorZone>
                        <StackPanel Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center">
                            <TextBlock Text="{Binding CurrentGebruiker.Naam}"></TextBlock>
                            <Button Style="{StaticResource MaterialDesignFlatButton}" Foreground="DarkGoldenrod"
                                            Command="{x:Static materialDesign:Flipper.FlipCommand}"
                                            Margin="0 4 0 0"
                                            >SHOW DETAILS</Button>
                        </StackPanel>
                    </Grid>
                </materialDesign:Flipper.FrontContent>

И моя viewmodel:

public ZoekMatchViewModel()
        {
            LeesGebruiker(1);
            KoppelenCommands();
        }

        private Gebruiker currentGebruiker;
        public Gebruiker CurrentGebruiker
        {
            get
            {
                return currentGebruiker;
            }

            set
            {
                currentGebruiker = value;
                NotifyPropertyChanged();
            }
        }

        private void KoppelenCommands()
        {
            NextCommand = new BaseCommand(VolgendeGebruiker);
            PrevCommand = new BaseCommand(VorigeGebruiker);
        }

        public ICommand NextCommand { get; set; }
        public ICommand PrevCommand { get; set; }

        private void LeesGebruiker(int id)
        {
            //instantiëren dataservice
            ZoekMatchDataService zoekMatchDS =
                new ZoekMatchDataService();

            currentGebruiker = zoekMatchDS.GetGebruiker(id);
        }


        public void VolgendeGebruiker()
        {
            if (CurrentGebruiker != null)
            {
                int id = (currentGebruiker.ID) + 1;
                LeesGebruiker(id);
            }
        }


        public void VorigeGebruiker()
        {
            if (CurrentGebruiker != null)
            {
                int id = (currentGebruiker.ID) - 1;
                LeesGebruiker(id);
            }
        }

Мои кнопки:

<Button Command="{Binding PrevCommand}" Background="Transparent" BorderThickness="0" Height="50">

и

<Button Command="{Binding NextCommand}" Background="Transparent" BorderThickness="0" Height="50">

Так проблема в том, что мой xaml не обновляется для нового пользователя, когда я нажимаю кнопку «Далее» или «Предыдущий». Если вам нужна дополнительная информация, я с удовольствием предоставлю!

1 Ответ

0 голосов
/ 12 апреля 2020

Я думаю, что "правильный" способ сделать это будет с пользовательским Selector. Selector - это базовый класс, используемый в WPF для элемента управления, который позволяет пользователю выбрать один или несколько элементов из списка. Например: ComboBox и ListBox оба Selector с. Если вы никогда не создавали пользовательский элемент управления до этого, это может быть немного сложнее.

Есть несколько более простых ответов. Вы можете создать класс, содержащий все данные, которые вы хотите отобразить, для одного параметра, и ваш Window определит свойство этого типа. Затем вы можете привязать все переменные части вашего интерфейса к этому свойству и просто изменить значение свойства вручную, когда пользователь нажимает левую или правую кнопку. Конечно, вы сможете использовать это только в одном месте, тогда как, если вы сделаете пользовательский элемент управления, вы сможете использовать его где угодно, любое количество раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...