我在列表框内的堆栈面板中有一个复选框。我需要根据一些逻辑操作设置该复选框的可见性,因此我需要在列表框中找到该元素。
在设置了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>
我在这个问题上停留了一段时间,现在它已经让我紧张了,请帮忙。 提前谢谢。
答案 0 :(得分:0)
您只需使用VisualTreeHelper
在Listbox
数据模板中查找控件。
参考:How to access a specific item in a Listbox with DataTemplate?