Windows Phone 8,在列表框中查找复选框项

时间:2014-11-22 07:05:39

标签: windows-phone-8

我在列表框内的堆栈面板中有一个复选框。我需要根据一些逻辑操作设置该复选框的可见性,因此我需要在列表框中找到该元素。

在设置了list`s dataSource之后,我使用以下代码在我的PageLoad上找到复选框。 但是在这个listboxItem上我得到一个空值和一个异常说:引用不是一个有效的visual dependencyobject

private void searchListCheckBoxVisibility()
        //private void SearchList_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                ListBoxItem listItem = this.SearchList.ItemContainerGenerator.ContainerFromIndex(2) as ListBoxItem;
                CheckBox targetCheckBox = FindFirstElementInVisualTree<CheckBox>(listItem);
}
}

以下是我的xaml:

Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <ListBox Margin="13,10,7,10" x:Name="SearchList" DoubleTap="SearchList_DoubleTap">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel x:Name="searchListPanel" Orientation="Horizontal" Width="400" ScrollViewer.HorizontalScrollBarVisibility="Auto">
                            <StackPanel Orientation="Vertical" Width="340">
                                <StackPanel Orientation="Vertical">
                                    <TextBlock Text="Name : " FontWeight="Bold" Style="{StaticResource ResourceKey=MSFTGuidelines_TextBlock}"/>
                                    <TextBlock Text="{Binding User}" TextWrapping="Wrap" Style="{StaticResource ResourceKey=MSFTGuidelines_TextBlock}"/>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Project : " FontWeight="Bold" Style="{StaticResource ResourceKey=MSFTGuidelines_TextBlock}"/>
                                    <TextBlock Text="{Binding Project}" TextWrapping="Wrap" Style="{StaticResource ResourceKey=MSFTGuidelines_TextBlock}"/>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Status : " FontWeight="Bold" Style="{StaticResource ResourceKey=MSFTGuidelines_TextBlock}"/>
                                    <TextBlock Text="{Binding On_OffBoarded}" TextWrapping="Wrap" Style="{StaticResource ResourceKey=MSFTGuidelines_TextBlock}"/>
                                </StackPanel>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Date : " FontWeight="Bold" Style="{StaticResource ResourceKey=MSFTGuidelines_TextBlock}"/>
                                    <TextBlock Text="{Binding DT_On_OffBoarded}" TextWrapping="Wrap" Style="{StaticResource ResourceKey=MSFTGuidelines_TextBlock}"/>
                                </StackPanel>
                                <StackPanel>
                                    <TextBlock Text=""/>
                                </StackPanel>
                            </StackPanel>
                            <CheckBox Width="60" 
                                      x:Name="user_Checkbox" 
                                      Content="" Tag="{Binding ID}" 
                                      Visibility="Collapsed" 
                                      Checked="user_Checkbox_Checked"
                                      Unchecked="user_Checkbox_UnChecked"
                                      Style="{StaticResource ResourceKey=MSFTGuidelinesCheckBox}"
                                      IsChecked="False"

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

我在这个问题上停留了一段时间,现在它已经让我紧张了,请帮忙。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您只需使用VisualTreeHelperListbox数据模板中查找控件。

参考:How to access a specific item in a Listbox with DataTemplate?