Привязка значения bool в ObservableCollection > в ListBox DataTemplate CheckBox вызывает сбой программы - PullRequest
0 голосов
/ 09 июля 2020

Я получаю своих пользователей из API и помещаю их в ObservableCollection элементов Tuple (нужны 2 значения bool для полей CheckBox IsSelected, которые я использую позже)

private ObservableCollection<Tuple<UserDetails, bool, bool>> _users;

public ObservableCollection<Tuple<UserDetails, bool, bool>> Users
    {
        get { return _users; }
        set
        {
            _users = value;
            OnPropertyRaised("Users");
        }
    }

public async Task GetUsers()
    {
        
        var tmp = await watchlistHelper.GetUsersAsync(); //API call
        if (tmp != null)
        {
            Users = new ObservableCollection<Tuple<UserDetails, bool, bool>>();
            foreach (UserDetails details in tmp.Content)
            {
                Users.Add(new Tuple<UserDetails, bool, bool>(details, false, false));
            }
        }
     }

Когда я пытаюсь использовать это без привязки к значениям bool, например:

<ListBox Grid.Row="1" ItemsSource="{Binding Users, ElementName=uc}" SelectionMode="Multiple">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>
                                <TextBlock Margin="2" Text="{Binding Item1.UserName }" VerticalAlignment="Center" />
                            </Grid>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

Все отображается правильно (только UserName), но когда я пытаюсь привязать его и использовать значения bool, моя программа просто вылетает

<ListBox Grid.Column="2" Grid.Row="1"  ItemsSource="{Binding Users, ElementName=uc}" HorizontalContentAlignment="Stretch" SelectionMode="Multiple">
                    
                    <ListBox.ItemTemplate >
                        <DataTemplate>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition SharedSizeGroup="write"/>
                                    <ColumnDefinition SharedSizeGroup="manage"/>
                                </Grid.ColumnDefinitions>
                                <TextBlock Margin="2"  Text="{Binding Item1.UserName}" VerticalAlignment="Center"/>
                                <CheckBox Margin="2" IsChecked="{Binding Item2}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="1"/>
                                <CheckBox Margin="2" IsChecked="{Binding Item3}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="2"/>

                            </Grid>
                        </DataTemplate>
                    </ListBox.ItemTemplate>

                </ListBox>

Если я жестко запрограммировал значения CheckBox в xaml или не использую их - он работает, как и предполагалось, поэтому, должно быть, проблема с bool в привязке кортежа к CheckBox, но я просто не могу понять, что могло его вызвать.

...