获取选定的一个列表框项目的值
get Values of one listbox item selected
我正在编写 windows 10 个通用应用程序。
我有一个列表框:
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock FontFamily="Segoe UI Symbol" Text="⛽" 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 文本值作为字符串。
我假设当您单击列表框的项目时,您已经为此定义了处理程序。现在在处理程序中,
private void handlr(object sender,SelectionChangedEventArgs e)
{
var obj = e.OriginalSource.DataContext as YourBoundObjectType;
// now do whatever you want with your obj
}
您可以使用 ListBox 的 SelectionChanged 事件和 SelectedItem 属性 来获取所选项目。由于您在 XAML 中使用了绑定,因此您可以将所选项目转换为 class 以获取 txtDate 文本值。例如:
在你的XAML
<ListBox x:Name="MyListBox" SelectionChanged="MyListBox_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock FontFamily="Segoe UI Symbol" FontSize="25" Text="⛽" />
<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();
}
我正在编写 windows 10 个通用应用程序。 我有一个列表框:
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock FontFamily="Segoe UI Symbol" Text="⛽" 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 文本值作为字符串。
我假设当您单击列表框的项目时,您已经为此定义了处理程序。现在在处理程序中,
private void handlr(object sender,SelectionChangedEventArgs e)
{
var obj = e.OriginalSource.DataContext as YourBoundObjectType;
// now do whatever you want with your obj
}
您可以使用 ListBox 的 SelectionChanged 事件和 SelectedItem 属性 来获取所选项目。由于您在 XAML 中使用了绑定,因此您可以将所选项目转换为 class 以获取 txtDate 文本值。例如:
在你的XAML
<ListBox x:Name="MyListBox" SelectionChanged="MyListBox_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock FontFamily="Segoe UI Symbol" FontSize="25" Text="⛽" />
<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();
}