【发布时间】:2017-11-18 17:28:00
【问题描述】:
我有一个包含两列的列表视图。第一列是复选框,第二列是服务器值。我想在单击按钮后获得该行中具有相应复选框的所有服务器名称的列表。这怎么可能?下面我能够从我的服务器模型中成功绑定数据并在第一列中放置一个复选框,但我被卡住了。
我正在尝试遵循 MVVM 模式,因此我有一个视图模型类,理想情况下我希望处理此逻辑,然后在检查的服务器名称存储在某个集合中之后将其传递。
XAML 代码
<ListView ItemsSource="{Binding Servers}" Margin="8,30,10,68">
<ListView.View>
<GridView>
<GridViewColumn Width="90" Header="Select For Sync">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox Tag="{Binding ID}" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked" IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}}, Path=IsSelected}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="280" Header="Pad Name"
DisplayMemberBinding="{Binding NodeName}" />
</GridView>
</ListView.View>
</ListView>
【问题讨论】:
-
“但我卡住了”,到底是什么问题?第二列没有显示任何内容吗?它只添加一行吗?如果
Servers中的每个数据都有一个布尔值,您的代码实际上可以被简化,以存储复选框是否被选中,我之前已经这样做过,如果需要可以提供一些示例代码。 -
@KeyurPATEL 我想将选中的复选框变成一个字符串集合,其中集合中的每个项目都是服务器列中的关联字符串名称。数据显示在第二列中,但我想根据第一列中检查的内容获取该数据
-
我之前做过非常相似的事情,我会尝试调整我的部分代码以满足您的要求作为答案。
标签: c# wpf visual-studio data-binding