【问题标题】:UWP binding to a method inside a ListViewUWP 绑定到 ListView 内的方法
【发布时间】:2017-05-22 23:35:29
【问题描述】:

如何在已将 x:DataType 设置为类的绑定中调用自定义方法?错误消息显示:在类型“Family”中找不到属性“TotalMembers”。将页面加载中的方法添加到 Family 类时,错误仍然存​​在。

// model
public class Family
{
    public int ID { get; set; }
    public string Surname { get; set; }
    public int TotalMembers() { return "some code..." }
}
public class Person
{
    public int ID { get; set; }
    public int FamilyID { get; set; }
    public string FirstName { get; set; }
}

// page load
public ObservableCollection<Family> ocFamily { get; set; }
ocFamily = new ObservableCollection<Family>();

// xaml
<ListView ItemsSource="{x:Bind ocFamily}">
    <ListView.ItemTemplate>
            <DataTemplate x:DataType="data:Family>
            <StackPanel>
                <TextBlock Text="{x:Bind Surname}" />
                <TextBlock Text="{x:Bind TotalMembers()}" />
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

第二个文本块应该显示家庭成员的总数。

【问题讨论】:

  • 我应该使用转换器吗?
  • 您使用的是什么版本的 Windows 10?
  • 最低版本:Windows 10.0; Build 10586,目标版本:Windows 10 周年纪念版 10.0; 14393

标签: xaml uwp win-universal-app windows-10-universal uwp-xaml


【解决方案1】:

要使用具有 {x:Bind} 的函数,您的应用的最低目标 SDK 版本 必须是 14393 或更高版本。当您的应用程序定位时,您不能使用函数 Windows 10 的早期版本。

您需要将 Min Version 设置为至少 14393x:Bind to function 才能工作。

您可以从here阅读更多内容。

在您的情况下,您应该能够创建TotalMembers 属性 而不是方法

【讨论】:

  • 也许我做错了。我需要在应用程序中调用一个函数来查询数据库并显示第二个表的家庭成员的动态行数。这不会是家庭表中的属性,因为在 Person 表中添加了行,绑定的列表视图中的计数会发生变化。
  • 问题是 DataTemplate 已经绑定到列表视图的类。
  • 我有点迷茫,但为什么不创建一个包装方法的属性呢?
  • 这确实有效,但我无法将参数传递给更复杂代码的属性。
  • @detailCode 我明白了,在这种情况下你可以尝试使用转换器。
猜你喜欢
  • 2019-04-13
  • 1970-01-01
  • 1970-01-01
  • 2018-02-06
  • 2017-10-30
  • 1970-01-01
  • 2019-02-03
  • 2016-12-01
  • 1970-01-01
相关资源
最近更新 更多