【问题标题】:WPF ListView questionWPF ListView 问题
【发布时间】:2009-06-16 14:56:48
【问题描述】:

这是我在这里的第一个问题。 我开始使用 WPF,但我被卡住了。这是问题所在: 我有一个 ListView 如下:

<UserControl.Resources>
    <DataTemplate x:Key="FirstCell">
        <StackPanel Orientation="Horizontal">
            <CheckBox Margin="2"></CheckBox>
        </StackPanel>
    </DataTemplate>
</UserControl.Resources>

<ListView Name="lvRights">
    <ListView.View>
        <GridView>
            <GridViewColumn Width="100" Header="Select" CellTemplate="{StaticResource FirstCell}"/>
            <GridViewColumn Width="200" Header="Right" DisplayMemberBinding="{Binding Path=Name}" />
        </GridView>       
    </ListView.View>
</ListView>

我将列表绑定到“角色”集合,这些角色只有 Id 和Name。 我正在使用该 DataTemplate 在第一列中显示一个复选框。

这是一个问题:

如何在运行时知道用户是否选中了其中一​​个复选框?在列表视图的 .Items 属性中,我有角色,但我无法获得有关第一列的任何信息。

我觉得这很简单,但不知何故我错过了答案。

提前 10 倍。

【问题讨论】:

  • 我现在在想这也是一个设计问题,因为我应该在角色中有这些信息。该死。问题仍然存在,我迫不及待地想用 wpf 度过新手阶段......

标签: .net wpf listview


【解决方案1】:

你可以

1) 向模板中的复选框添加点击处理程序。在后面的代码中,您可以将复选框的 DataContext 转换回 Role 以确定它是哪个。

2) 您可以在 Role 类中添加某种布尔属性。然后,您可以将复选框的 IsChecked 属性绑定到此布尔属性。您可能需要一个 binding converter 来在布尔值和被检查属性之间进行转换

【讨论】:

  • 感谢您的回答,我刚刚尝试了您的第一个解决方案,它有效!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 2011-02-19
  • 2011-01-17
  • 2018-09-28
相关资源
最近更新 更多