XAML . Net MAUI-如何绑定到KeyValuePairs列表对象中的属性

g0czyy6m  于 2022-12-07  发布在  其他
关注(0)|答案(2)|浏览(201)

完全是.Net MAUI的新手。
我有下面的“model”(应用程序数据)类,它包含一个KeyValuePair〈String,String〉列表的属性,如下所示:

public class app_data
   {

      private Int32 m_num_fld;

      private List<KeyValuePair<String, String>> m_kvp_list;

      public app_data()
      {

         m_num_fld = 100
      
         m_kvp_list = new List<KeyValuePair<String, String>>()
         {

            new KeyValuePair<String, String>( "Key 1", "Value 1" ),
            new KeyValuePair<String, String>( "Key 2", "Value 2" )

         };
         
      }

      public Int32 num_fld
      {

         get => m_num_fld;

         set => m_num_fld = value;

      }

      public List<KeyValuePair<String, String>> kvp_list
      {

         get => m_post_data_kv_list;

         set => m_post_data_kv_list = value;

      }

   }

在XAML(如下所示)中,如何在app_data中“绑定”kvp_list以显示键和值?如果有人可以发布一个分步示例或链接到类似的问题,这将非常有帮助。

<CollectionView ItemsSource="{Binding ????? }">

        <CollectionView.ItemTemplate>

            <DataTemplate>

                    <Grid
                        RowDefinitions="*,*"
                        ColumnDefinitions="3*, *"
                        RowSpacing="5">

                        <Label 
                            Text="{ ????? - HOW TO BIND TO Key in kvp_list }" 
                            Grid.Row="0"
                            Grid.Column="0"
                            BackgroundColor="White"
                            Padding="0,10,30,10"
                            />

                        <Label
                            Text="{Binding HOW TO BIND TO Value in kvp_list ????? }"
                            Grid.Row="1"
                            Grid.Column="0"
                            Grid.ColumnSpan="2"
                            BackgroundColor="LightGrey"
                            Padding="10,10,30,10"
                            Margin="10"
                            />

                    </Grid>

            </DataTemplate>

        </CollectionView.ItemTemplate>

    </CollectionView>

先谢谢你。

dfuffjeb

dfuffjeb1#

从页面中删除x:DataType=的所有示例(正如Jason建议的那样)成功了--为什么?谁知道呢!这仍然是一个谜(至少对我来说),因为我在官方文档中没有发现任何提到接近这个“解决方案”的东西。
官方文档确实建议使用
x:DataType=
(文档中的大多数示例都是这样做的),因为这会产生compiled bindings,它“* 提高了数据绑定性能 ”,“ 绑定表达式的编译时验证使开发人员能够获得更好的故障排除体验 *”--也就是说,如果您能让它工作的话!
我还没有找到任何官方的例子,利用编译绑定的一个属性,如:

public List<KeyValuePair<String, String>> kvp_list { ... }

其中KeyValuePair的“Key”和“Value”通过intellisense以某种方式变得可用,并提供编译时验证。如果有更有经验的人愿意在原始帖子中使用“app_data”模型发布这样一个示例,并包含允许编译绑定的XAML属性,请随意!

ycggw6v2

ycggw6v22#

KeyValuePair有两个属性:KeyValue,您可以在绑定中使用它们

相关问题