get选定一个列表框项目的值

问题描述:

我正在编码windows 10通用应用程序。 我有一个列表框:get选定一个列表框项目的值

<ListBox.ItemTemplate> 
    <DataTemplate> 
     <StackPanel Orientation="Horizontal"> 
      <TextBlock FontFamily="Segoe UI Symbol" Text="&#x26FD;" FontSize="25"/> 
      <StackPanel Orientation="Vertical"> 
       <TextBlock Name="txtDate" Text="{Binding Date}" FontSize="15" Margin="20,0,0,0"/> 
       <TextBlock Name="txtDitance" Text="{Binding Distance}" FontSize="15" Margin="20,5,0,0"/> 
      </StackPanel> 
      <TextBlock Name="txtPrice" Text="{Binding Price}" FontSize="15" Margin="30,0,0,0"/> 
     </StackPanel> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

当我点击列表框中的一个项目,我怎么能得到该项目的txtDate文本价值? 我需要将选定项目的txtDate文本值作为字符串获取。

+2

你有没有尝试什么吗? – Sybren

+0

不,我是绝对的初学者! –

+0

“不,我是绝对的初学者”这不是Stackoverflow的工作原理。 – Krythic

您可以使用ListBox的SelectionChanged事件和SelectedItem属性来获取选定的项目。而且,由于您在XAML中使用了绑定,因此您可以将选定的项目转换为您的类以获取txtDate文本值。例如:

在您的XAML

<ListBox x:Name="MyListBox" SelectionChanged="MyListBox_SelectionChanged"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock FontFamily="Segoe UI Symbol" FontSize="25" Text="&#x26FD;" /> 
       <StackPanel Orientation="Vertical"> 
        <TextBlock Name="txtDate" Margin="20,0,0,0" FontSize="15" Text="{Binding Date}" /> 
        <TextBlock Name="txtDitance" Margin="20,5,0,0" FontSize="15" Text="{Binding Distance}" /> 
       </StackPanel> 
       <TextBlock Name="txtPrice" Margin="30,0,0,0" FontSize="15" Text="{Binding Price}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

而在你的代码隐藏

private void MyListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    //suppose MyClass is the class you used in binding 
    var selected = MyListBox.SelectedItem as MyClass; 
    //Date is the property you bind to txtDate 
    string date = selected.Date.ToString(); 
} 

我假定当你点击一个listbox项时,你已经为此定义了处理函数。现在在处理程序中,

private void handlr(object sender,SelectionChangedEventArgs e) 
{ 
    var obj = e.OriginalSource.DataContext as YourBoundObjectType; 
    // now do whatever you want with your obj 
} 
+0

这不是通用的工作! –

+0

什么是通用的DataContext引用? –