【问题标题】:Access TextBlock Text inside a DataTemplate UWP访问 DataTemplate UWP 中的 TextBlock 文本
【发布时间】:2017-11-07 09:27:39
【问题描述】:

我在整个互联网上搜索了这个问题,但我的 UWP 应用程序无法取得进展。

我有一个ListView 和一个DataTemplate

<ListView x:Name="lvEszTmplt" Margin="50,61,0,0" ItemClick="lvEszTmplt_ItemClick_1" SelectionChanged="lvEszTmplt_SelectionChanged_1"   >
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Margin="0,8" x:Name="spItem" >
                    <TextBlock x:Name="tbAzonosito" > 
                                <Run Text="Azonosító: " Foreground="DarkGray"/> 
                                <Run Text="{Binding Azonosito}" 
                                     Foreground="DarkGray"
                                     />

                    </TextBlock>
                    <TextBlock x:Name="tbMegnevezes" > 
                                <Run Text="Megnevezés: " Foreground="DarkGray"/> 
                                <Run Text="{Binding Megnevezes}"
                                     Foreground="DarkGray"/>

                    </TextBlock>
                    <TextBlock x:Name="tbSerial" > 
                                <Run Text="Serial: " Foreground="DarkGray"/> 
                                <Run Text="{Binding Serial}"
                                     Foreground="DarkGray"/>
                    </TextBlock>
                    <TextBlock x:Name="tbSorszam"   > 
                                <Run Text="Sorszám: " Foreground="DarkGray"/> 
                                <Run Text="{Binding Sorszam}"
                                     Foreground="DarkGray"/>
                    </TextBlock>

                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

ListView 中,“Azonosito”是一个 ID 列。 当我点击Item 时,它应该会转到另一个Frame 并从ListView 中获取ID,并使用ID 中的数据加载Deatails 视图。

我该怎么做?

谢谢你帮助我!

【问题讨论】:

    标签: c# listview binding uwp


    【解决方案1】:

    @Krzysztof Bracha 有一个很好的答案。但我看到你忘记添加 IsItemClickEnabled 属性。

    您可以使用IsItemClickEnabled=true 来启用ItemClick。

    您应该将源绑定到 ListView。

    您也可以使用 x:bind 来绑定数据。

    如果您的来源类型是 ObservableCollection,您可以将代码用作 @Krzysztof Bracha。

    如果你需要获取ListView中的控件,你可以使用VisualTreeHelper.GetChild(DependencyObject reference, int childIndex);来获取。

    见:https://docs.microsoft.com/en-us/windows/uwp/data-binding/data-binding-in-depth

    【讨论】:

      【解决方案2】:

      使用ItemClick事件的ItemClickEventArgs.ClickedItem属性读取点击的项目:

      private void lvEszTmplt_ItemClick_1(object sender, ItemClickEventArgs e)
      {
          var item = (ItemModel)e.ClickedItem;
          var id = item.Azonosito;
      }
      

      【讨论】:

      • 对不起,我不明白。 ItemModel 是什么?
      • 您的ListView 应该绑定到对象集合,其中每个对象都是DataTemplate 中定义的项目的模型。 ItemModel 是绑定到列表视图的对象的组成类名,您应该在应用程序中替换它。
      • 现在我明白了!非常感谢!
      猜你喜欢
      • 1970-01-01
      • 2018-04-26
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 1970-01-01
      相关资源
      最近更新 更多