我有一个字典绑定到ListView并有两列。它支持多个选择和确定按钮。现在,在从listview中选择项目后,我只希望将第1列,即字典的键保存在列表列表1中。 需要帮助:)
这是后端代码: -
public partial class MainWindow : Window
{
public List<string> list1
{
get;
set;
}
public MainWindow()
{
InitializeComponent();
Dictionary<int, string> list = new Dictionary<int, string>();
list.Add(1, "a");
list.Add(2, "b");
lvUsers.ItemsSource = list;
lvUsers.SelectedIndex = 0;
}
public void getSelectedItem(Object sender, RoutedEventArgs e)
{
// Here is the part where you get the keys of selected items
}
}
}
Xaml代码: -
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ListView Margin="10,10,10,0" Name="lvUsers" SelectionMode="Multiple" Grid.Row="0">
<ListView.View>
<GridView>
<GridViewColumn Header="column1" Width="120" DisplayMemberBinding="{Binding Key}" />
<GridViewColumn Header="column2" Width="50" DisplayMemberBinding="{Binding Value}" />
</GridView>
</ListView.View>
</ListView>
<Button x:Name="getitem" Click="getSelectedItem" Grid.Row="1" Content="ok" />
</Button>
</Grid>
</Window>
答案 0 :(得分:2)
这样的事情可以解决问题:
var keys = lvUsers.SelectedItems.OfType<KeyValuePair<int, string>>().Select(x => x.Key);
答案 1 :(得分:1)
首先,您使用的是terms
,而您实际上并没有这样做。
Binding
中的 WPF
使用{Binding}
语法或Binding
类。你只是基本上设置ItemsSource
字典。
因为您没有遵循MVVM
模式而只是在代码后面执行它。您可以使用list1
LINQ
list1 = lvUsers.SelectedItems.OfType<KeyValuePair<int,string>>().Select(x => x.Key.ToString()).ToList();
答案 2 :(得分:1)
您可以在Name属性中找到密钥:
string MyKey = MyListView.SelectedItems[0].Name;
它会给你一些类似的东西:
private void MyListView_SelectedIndexChanged(object sender, EventArgs e)
{
if (ListView.SelectedItems.Count != 0)
{
string MyKey = MyListView.SelectedItems[0].Name;
//...
}
}