问题标签 [xbind]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2191 浏览

c# - UWP XAML x:无法识别绑定继承的接口

在 UWP XAML 应用程序中使用 x:Bind 时,请考虑以下事项:

在 Page 类中,我们有以下内容:

在 MainPage XAML 中,我们有以下代码段:

这会导致以下编译器错误:XamlCompiler error WMC1110: Invalid binding path 'A' : Property 'A' can't be found on type 'ISubInterface'

但是,以下确实有效:

有人知道编译器无法识别继承的接口属性是否是 UWP XAML 平台的已知限制?或者这应该被认为是一个错误?是否有任何已知的解决方法?

非常感谢您的帮助。提前致谢!

0 投票
1 回答
3571 浏览

xaml - x:Bind with DataTemplates 中 ElementName 的替代方案

使用传统的 {Binding} 语法时,您可以指定元素名称以指向页面上的特定控件,并能够访问其属性。例如,如果页面被命名page,你可以这样做:

使用{x:Bind}语法它说

使用 x:Bind,您不需要使用 ElementName=xxx 作为绑定表达式的一部分。使用 x:Bind,您可以使用元素名称作为绑定路径的第一部分,因为命名元素成为页面或用户控件中代表根绑定源的字段。

因此,对于上面 {x:Bind} 中的示例,将是

工作正常,直到它位于数据模板中(例如 ListView 的 ItemTemplate)。在这种情况下,它不再工作,因为它正在寻找Page导致以下错误的指定数据类型(假设我的数据类型是customer):

XamlCompiler 错误 WMC1110:绑定路径“Page.Name”无效:在“客户”类型上找不到属性“页面”

将 {x:Bind} 语法与数据模板和数据模板外的访问控制一起使用的解决方案是什么?

示例代码可在此处获得(注意特定提交)

0 投票
2 回答
1059 浏览

xaml - 无法在 DataTemplates 中使用 x:Bind 绑定到按钮事件 - 生成 XAML 错误

使用{x:Bind}标记语法,您可以绑定到事件,前提是该方法满足以下要求:

  • 匹配事件的签名。
  • 或没有参数。
  • 或具有相同数量的可从事件参数类型分配的类型参数。

这在 DataTemplate 之外工作得很好。一旦绑定发生在 DataTemplate 中,编译器就会生成以下错误:

Xaml 内部错误错误 WMC9999:对象引用未设置为对象的实例。

绑定到 DataTemplates 中的事件的修复方法是什么?

完整的示例代码在这里

下面的示例代码片段 - 请注意第一个按钮(第 2 行)很好,第二个按钮(第 6 行)也很好。如果您注释掉第 6 行并在第 7 行中添加注释,则会发生错误。

0 投票
1 回答
1315 浏览

c# - 绑定和 x:Bind,一个正在工作

我正在用 Bindings 和 x:Bind 做一些测试,我发现了一些有趣的事情。

XAML

好的,所以首先 x:Bind 是 viewModel,它具有属性 CurrenciesViewModel(模型名称 CurrencyListViewModel),它具有属性 Currencies(模型名称 CurrencyList),它具有属性 Currencies,它是 ObservableColletion

所以当我添加这样的对象时这是有效的

但是,当我通过我的 DataProvider(简单的 xml 休息)用一种方法下载我的模型时

所以我在主 ViewModel 中的第一个属性 CurrencyViewModel 是这样的

然后我的 listView 是空的!我检查了我的数据是否已下载,是的……我用 Binding 更改了 x:Bind,一切正常。

如果你们需要,我可以复制粘贴所有课程。但请告诉我 wtf ;)

0 投票
1 回答
737 浏览

c# - 如何在没有任何属性的情况下使用 x:Bind

在 Windows 8.1 中,我可以做到这一点

然后在事件 Grid_OnTapped 中,我可以使用 Grid 的 Tag 属性来知道哪个项目被点击。

但是当更改为 x:Bind 时,它不再起作用。抛出异常:“对象引用未设置为对象的实例”

进一步测试,这段代码会显示类名

但那唯一的工作

请帮忙。谢谢

0 投票
3 回答
4919 浏览

c# - 使用 x:Bind 使用 Converter 绑定到当前 DataContext

我有以下转换器:

以及尝试使用转换器的 XAML:

这给了我一个 NPE value.GetType(),显然传入的值是null

如果我更改以下部分:

<TextBlock Foreground="{x:Bind Converter={StaticResource MyConverter}}"/>

<TextBlock Foreground="{Binding Converter={StaticResource MyConverter}}"/>

然后它工作。Debug正确输出StickerCategory为值的类型。x:Bind进入转换器的任何原因null以及如何使其工作x:Bind?我正在尝试传递DataContext给我的转换器。

0 投票
3 回答
1459 浏览

xaml - 带类型参数的页面

我想使用 UWP 的新功能 -> x:Bind。为此,我的所有页面都需要具有 ViewModel 属性(如教程中所述)。为了避免代码重复,我建立了如下基类:

如您所见,此 BasePage 类包含名为“VM”的属性,并且该属性的类型为 BaseVM。因此,我不需要在每个派生类上定义 VM 属性。

然后我创建了在 xaml 中定义的派生页面“MainPage”,如下所示:

通过这样做,即使是 Resharper 的 Intellisense 也为我提供了 MainPage.xaml 中“MainVM”的属性,因此可以编写:

不幸的是,当我尝试构建项目时,MainPage.gics 中出现错误:

严重性代码 描述 项目文件行错误 CS0305 使用通用类型“BasePage”需要 1 个类型参数 Realarm D:...\Realarm\obj\x86\Debug\View\Pages\MainPage.gics 13

有什么帮助吗?

0 投票
1 回答
957 浏览

c# - 如何使用 x:Bind 和 System.Collections.Generic.List 填充 ListView 并生成列

我试图在将 ItemsSource 设置为时用List填充ListView ,但我不知道如何制作列并使项目正确显示。x:Bind

这是我到目前为止得到的:

Database.cs 中的 Customer 类

Database.cs 中的 FetchCustomer 方法返回客户对象列表

客户视图页面

我绑定 ItemsSource 的 XAML

我该如何继续这样做,以便自动生成列并且项目正确显示?

我试图添加ListViewHeaderItem并浏览不同的属性,但还没有发现如何。

除了绑定之外,我得到的结果是:

应用程序快照说明 ItemsSource 正在工作,但未达到预期效果,因为它仅显示:每个 ListViewItem 中的 AuraFaktura.Customer

更新

我今天取得了一些进展,现在我有正确的数据输出。我发现使用 DataTemplate 可以在元素上设置绑定。

我仍然在努力以正确的方式显示数据。

这是我现在编写的 XAML:

结果:

应用程序快照说明 DataTemplate 以某种方式工作但未按预期显示,因为项目被截断并且标题项目未显示。

因此,您可以看到 GridViewHeaderItem 没有显示并且 GridViewItem 没有正确显示。

这是我想要得到的结果:

我想要结束的结果的快照

我将如何继续编写我的 XAML 来实现这样的结果?

0 投票
1 回答
1260 浏览

uwp - UWP x:双向绑定需要转换器?

我正在使用一个绑定到我的 ViewModel.SeletedLogItem 属性的内容控件,该属性是 LogItemDTO 类型,在 DataTemplate 的 DataType 中指定。当我将绑定设置为时,Mode=TwoWay我得到一个编译错误,说我需要一个转换器。

无效的绑定路径“ViewModel.SelectedLogItem”:无法在没有转换器的情况下将类型“LifeLog.Data.DomainEntities.LogItemDTO”绑定到“System.Object”

下面是我的视图模型的一部分和内容控件的 xaml

0 投票
1 回答
786 浏览

binding - x:绑定设计时问题

我正在尝试构建我的 UWP 应用程序,目前在尝试将 DataTemplate 与资源字典中的 x:Bind 一起使用时遇到了设计器异常。

我创建了一个带有相应代码隐藏的资源字典“ItemTemplates.xaml”(以确保 x:Bind 初始化)。该文件仅包含一个模板:

然后我将此资源字典添加到 App.xaml 中,如下所示:

现在该项目无法使用,因为设计器抛出了奇怪的异常,但是当我清理并重建项目并导航到 HomeView.xaml 页面时,设计器只显示默认的“ToString()”项(基本上列表视图只包含三个ListView 中的文本“Models.Categories”)和我的 ListView 的ItemTemplate属性带有下划线并显示以下错误:

当我导航回 App.xaml 时,我看到另一个下划线(该<resources:ItemTemplates />行),上面写着:

这两个错误都是无意义的,因为当我实际运行该应用程序时,没有任何问题并且一切正常。到目前为止,我发现的唯一解决方法是以经典方式和“编译”方式两次包含 ResourceDictionary:

这个解决方案有效,然后在设计时和运行时一切都有效,但我真的认为它非常混乱,必须有一个更好、更安全的方法,否则我错过了一些微不足道的东西。

我正在运行 Visual Studio 2015 Update 1 并安装了最新的 UWP SDK。该项目的目标是构建 10240。

编辑:设计师经常抛出并完全崩溃的另一个异常:

根据 StackTrace 输出,这发生在 ItemTemplates.xaml.cs 代码中 - 特别是生成的方法ProcessBindings。同样,该项目仍然可以正常编译和运行,但设计者甚至不会费心尝试显示输出。