WPF的listview如何获取指定项的单元格

qq37019736 qq37019736 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
xaml的代码

<DataTemplate x:Key="isAuditeCheckDt">
<CheckBox x:Name="isAuditeCheck" IsChecked="{Binding isCheck}" Content="{Binding isCheck}" ></CheckBox>
</DataTemplate>

<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=userName}" Header="用户名"
Width="100"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=type}" Header="类型"
Width="150"/>
<GridViewColumn CellTemplate="{StaticResource isAuditeCheckDt}" Header="是否审计"
Width="108"/>
</GridView>
</ListView.View>

我该如何获得Checkbox的单元格,我想在初始化时让前三个,或者指定的三个item的Checkbox的isenabled变成false
百度了好久找不到资料啊,找到个类似的用
 private UIElement GetListViewCellControl(int rowIndex, int cellIndex)
{
// rowIndex and cellIndex base is 0.
// First Get ListViewItem
UIElement u = listView.ItemContainerGenerator.ContainerFromIndex(rowIndex) as UIElement;
if (u == null) return null;

// Seartch Unit In ListViewItem
while ((u = (VisualTreeHelper.GetChild(u, 0) as UIElement)) != null)
{
if (u is GridViewRowPresenter)
{
return VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(u, cellIndex), 0) as UIElement;
}
}

return u;
}
这个函数,但调试了一下发现没有获取到。类似的还有

foreach (users user in listView.Items)
{
ListViewItem lvi = this.listView.ItemContainerGenerator.ContainerFromItem(user) as ListViewItem;
CheckBox cb = FindVisualChild<CheckBox>(lvi);
cb.IsEnabled = false;
}
private ChildType FindVisualChild<ChildType>(DependencyObject obj) where ChildType : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is ChildType)
{
return child as ChildType;
}
else
{
ChildType childOfChildren = FindVisualChild<ChildType>(child);
if (childOfChildren != null)
{
return childOfChildren;
}
}
}
return null;

}
但是都不行啊!!!都编译通过但是获取不到checkbox啊!!!为什么,求大神解答
...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
qq37019736
C# 111,129 成员 642,538 内容