【问题标题】:UWP ListView clicked item [duplicate]UWP ListView单击的项目[重复]
【发布时间】:2018-05-17 14:40:57
【问题描述】:

我需要有关 UWP 中的 ListView 的帮助。如何获取单击项目的 TextBlock 值? 提前谢谢你

我的代码:

     <ListView x:Name="lstVLocalTemp" ItemsSource="{Binding LocalTemp}" Background="{StaticResource NuhmeBackgroundColor}" IsItemClickEnabled="True" >
          <ListView.ItemTemplate>
                <DataTemplate x:Name="DoubleLineDataTemplate">
                     <StackPanel Orientation="Horizontal" Height="64" >
                          <Image Source="/Assets/Icons/Weather/Thermometer.png" Height="32" Width="32" VerticalAlignment="Center"/>
                          <StackPanel Orientation="Vertical" VerticalAlignment="Center" Margin="2,0,0,0">
                               <TextBlock x:Name="txBLocalTempLocation" Text="{Binding Location}"  Foreground="OrangeRed"/>
                               <TextBlock x:Name="txBLocalTempIP" Text="{Binding IP}" Foreground="DarkSeaGreen"/>
                               <TextBlock x:Name="txBLoacalTempDevice" Text="{Binding Device}" Foreground="DarkSeaGreen"/>
                          </StackPanel>
                    </StackPanel>
               </DataTemplate>
         </ListView.ItemTemplate>
    </ListView>

    Dim lt As New LocalTemp With {.Location = "Her", .IP = "192.168.0.155", .Device = TempDeviceType.DS18B20}
    Dim lt2 As New LocalTemp With {.Location = "Ikke hjemme", .IP = "192.168.0.156", .Device = TempDeviceType.DHT11}
    dataList.Add(lt)
    dataList.Add(lt2)
    lstVLocalTemp.ItemsSource = dataList

Public Class LocalTemp
    Public Property Location() As String
    Public Property IP() As String
    Public Property Device() As TempDeviceType
End Class

【问题讨论】:

  • 我最近经常看到这种情况,但我不知道为什么。我相信人们要么决定学习 UWP,要么需求正在上升,但在学习 UWP 或 WPF 时强烈建议学习 MVVM 和 XAML。我相信这是代码背后和 XAML 绑定的问题,都是错误的方式。您当然可以以 MVC 格式编写 UWP,这很好,但是当您使用 DataBinding 时,您更像是 MVVM 格式,不应将两者结合起来。我已经回答了这些问题,但我开始觉得我并没有真正帮助任何人。 IMO,您应该休息一下,了解有关 MVVM / XAML 的更多信息。

标签: c# vb.net uwp


【解决方案1】:

实际上TextBlock 的值只是与LocalTemp 对象绑定。获取当前点击项对应的LocalTemp对象,可以获取每个值。只需使用ItemClick 事件句柄来捕获当前单击的项目。例如,

<ListView x:Name="lstVLocalTemp"  ItemClick="lstVLocalTemp_ItemClick" IsItemClickEnabled="True" >
...
</ListView>

Private Sub lstVLocalTemp_ItemClick(sender As Object, e As ItemClickEventArgs)
    Dim result As LocalTemp = e.ClickedItem
    Dim currentlocation As String = result.Location
    Dim currentIP As String = result.IP
End Sub

如果我误解了你,请纠正我,或者如果你对点击的项目有特殊要求,请详细说明。

【讨论】:

  • 感谢您的解决方案。不,你没有误会:)
猜你喜欢
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-16
相关资源
最近更新 更多