【发布时间】:2016-01-16 13:06:40
【问题描述】:
我正在尝试使用 listbox_SelectionChanged() 方法从 ListBox 中获取所选项目,但它似乎不起作用。你能告诉我将所选项目从列表框中取出的最佳方法是什么。我试过的代码如下。
非常感谢您的帮助。
XAML
<ListBox
x:Name="lbSkills"
Grid.Row="1"
Margin="10,0,10,10" SelectionChanged="LbSkills_SelectionChanged">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderThickness="0,0,0,1" BorderBrush="Beige">
<Grid Width="auto" HorizontalAlignment="Stretch">
<TextBlock VerticalAlignment="Center" FontSize="26" Grid.Column="0" Foreground="Black" Text="{Binding SkillDescription}"/>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
XAML.cs - 我也尝试过注释代码,但无法获取所选项目
private async void LbSkills_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//var addedItems = e.AddedItems;
//string selectedSkillString = "None";
//if (addedItems.Count > 0)
//{
// var selectedSkill = addedItems[0];
// selectedSkillString = selectedSkill.ToString();
//}
//lbSkills.SelectedItem.ToString();
MessageDialog msgBox = new MessageDialog(e.AddedItems.ToString());
await msgBox.ShowAsync();
}
【问题讨论】:
-
我试过你的代码,当列表中的一个项目被选中时,事件被正确触发,它在
lbSkills.SelectedItem和e.AddedItems[0]中都有 -
lbSkills.SelectedItem 正确显示所选项目。尝试删除 async / await 并检查。
-
嗨 ANjum,我尝试删除 async/await 但仍然相同。我只得到路径而不是选择的项目。只是提到我在 Windows 8.1(不是手机)中尝试这个。
标签: wpf xaml data-binding listbox