积极答复者
在ListView的列标题中的Checkbox,程序中怎么设置去选中状态?

问题
-
我在一个ListView的列标题中放了一个CheckBox:
<GridViewColumn Header="" Width="40"> <GridViewColumn.HeaderTemplate> <DataTemplate> <CheckBox HorizontalAlignment="Center" Click="SelectAllClick" Style="{StaticResource MyCheckBoxSmall2}"></CheckBox> </DataTemplate> </GridViewColumn.HeaderTemplate> </GridViewColumn>
然后我发现程序里面无法访问这个Checkbox,我即使给他设置一个Name属性也无法在代码中访问它。
我现在需要在代码中设置它的IsChecked属性。
da jia hao!
答案
-
Hi,
试着设置 IsChecked=true
代码:
private void Button_Click(object sender, RoutedEventArgs e) { CheckBox chb = GetVisualChild<CheckBox>(lv1, v => v.Name == "cb1"); if (null != chb) { chb.IsChecked = true; } } public T GetVisualChild<T>(DependencyObject parent, Func<T, bool> predicate) where T : Visual { int numVisuals = VisualTreeHelper.GetChildrenCount(parent); for (int i = 0; i < numVisuals; i++) { DependencyObject v = (DependencyObject)VisualTreeHelper.GetChild(parent, i); T child = v as T; if (child == null) { child = GetVisualChild<T>(v, predicate); if (child != null) { return child; } } else { if (predicate(child)) { return child; } } } return null; }
Best Regards,
Alex
如果您对Visual Studio 或Microsoft Azure相关产品感兴趣,请点击此链接,或扫描以下二维码注册获取相关信息。
全部回复
-
Hi,
试着设置 IsChecked=true
代码:
private void Button_Click(object sender, RoutedEventArgs e) { CheckBox chb = GetVisualChild<CheckBox>(lv1, v => v.Name == "cb1"); if (null != chb) { chb.IsChecked = true; } } public T GetVisualChild<T>(DependencyObject parent, Func<T, bool> predicate) where T : Visual { int numVisuals = VisualTreeHelper.GetChildrenCount(parent); for (int i = 0; i < numVisuals; i++) { DependencyObject v = (DependencyObject)VisualTreeHelper.GetChild(parent, i); T child = v as T; if (child == null) { child = GetVisualChild<T>(v, predicate); if (child != null) { return child; } } else { if (predicate(child)) { return child; } } } return null; }
Best Regards,
Alex
如果您对Visual Studio 或Microsoft Azure相关产品感兴趣,请点击此链接,或扫描以下二维码注册获取相关信息。