Контекст данных и тег не привязаны должным образом ко всем элементам списка - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь привязать контекст данных и тег к элементам представления списка. Мой список содержит название отдела. Таким образом, пользователь может выбрать любой отдел. Проблема в том, что когда я пытаюсь проверить 16-й элемент списка, я не получаю контекст данных (который содержит идентификатор отдела) и тег (которые содержат название отдела). Он отлично работает для 16-го элемента выше (есть ли проблема с прокруткой? Потому что после 15-го элемента мне нужно прокрутить вниз, чтобы проверить элемент)

 <ListView Width="480" Name="LVDepartment" ItemsSource="{Binding AllDepartmetnList}" 
              DataFetchSize="1" 
              IncrementalLoadingTrigger="Edge" 
              IncrementalLoadingThreshold="5"  Margin="9,57,-3,57"  >
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid  BorderThickness="0 0 0 1" BorderBrush="#E1E1E1">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="25"/>
                            <ColumnDefinition Width="13*"/>
                        </Grid.ColumnDefinitions>
                        <CheckBox Width="15" DataContext="{Binding id}" Tag="{Binding name}" Style="{StaticResource CheckBoxStyle1}"  HorizontalAlignment="Left"  VerticalAlignment="Top"     Name="CheckBoxItem" Checked="CheckBoxItem_Checked" Unchecked="CheckBoxItem_Unchecked" Loaded="CheckBoxItem_Loaded" Grid.Column="0" ></CheckBox>
                        <TextBlock Width="465" Padding="20 0 0 0" Foreground="#333333" FontFamily="{StaticResource inventoryRegularFont}" FontSize="14px"  HorizontalTextAlignment="Left"   AccessKey="{Binding id}"  HorizontalAlignment="Left"    VerticalAlignment="Center" Name="TextblockItem" Grid.Column="1"  Text="{Binding name}"></TextBlock>
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

код: =

 public async void GetDepartmentList()
    {
        try
        {
            Uri requestUriForDept = new Uri(APIServer + "Department/GetDepartments");
            var formattedJsonDataForDept = new
            {

            };
            string jsonDataForDept = "";
            jsonDataForDept = Newtonsoft.Json.JsonConvert.SerializeObject(formattedJsonDataForDept);
            var objClintForUsers1 = new System.Net.Http.HttpClient();

            System.Net.Http.HttpResponseMessage responseForDept = await objClintForUsers1.PostAsync(requestUriForDept,
                new StringContent(jsonDataForDept, System.Text.Encoding.UTF8, "application/json"));

            string responJsonDataForDept = await responseForDept.Content.ReadAsStringAsync();

            dynamic respondedDataForDept = JsonConvert.DeserializeObject(responJsonDataForDept.ToString());
            if ((string)respondedDataForDept["status"] == "Success")
            {
                // Dept list initialization
                DepartmentList = new ObservableCollection<DepartmentData> { };
                foreach (var Dept in respondedDataForDept["deptList"])
                {
                    string DeptName = Dept.deptName;
                    int DeptId = Dept.deptid;
                    AllDepartmetnList.Add(new DepartmentData(DeptId, DeptName) { });
                }
                LVDepartment.ItemsSource = AllDepartmetnList;

            }
        }
        catch(Exception ex)
        {
            ex.Message.ToString();
        }

    }

после установки флажка: =

 private void CheckBoxItem_Checked(object sender, RoutedEventArgs e)
    {

            CheckBox ch = (CheckBox)sender;
            int DeptId = Convert.ToInt32(ch.DataContext); // here i am getting the datacontext zero if item is more than 16 
    }

Я не получаю вышеприведенный список данных, выбранный контекст данных элемента. После флажка установите флажок.

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