问题标签 [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 投票
0 回答
24 浏览

uwp - X:绑定绑定下拉列表到绑定列表

我一直在弄清楚如何将下拉列表绑定到我的绑定列表框。我想显示一个列表,其中包含下拉列表中显示的所有乘客及其座位号。管理员应该能够通过下拉列表更改乘客的座位号。

我曾尝试查看嵌套绑定,但找不到任何提及我的问题的内容。

XAML

0 投票
3 回答
72 浏览

c# - UWP - 这个有界属性是否在 UI 上下文上运行?

我有一个简单的 bool 绑定到 ProgressRing IsActive 属性。该属性位于 ViewModel 基类中。这是代码:

因此,当页面加载并转到 时OnNavigatedTo,我的理解是我们仍然处于 UI 上下文中。当我们到达await _vm.InitViewModel(state.classState).ConfigureAwait(true);in 时OnNavigatedTo,我的理解是因为这个调用是等待的,所以 InitViewModel 不会发生在 UI Context 中,所以当绑定ProgressRingActive的属性发生变化时,不会在 UI 线程上触发属性更改,因此不会进行任何更改。这是正确的吗?

我之前尝试摆脱 await 调用_vm.InitViewModel,认为它会进入 UI 上下文中的方法,如果我删除vm.InitViewModel调用时的等待,不在ProgressRingActive = true;UI 上下文中进行,那么调用将var success = await _restrictModel.LoadAppsFromServer().ConfigureAwait(true);在不同的上下文中编组,一旦它返回,我们又回到了 UI 上下文,并ProgressRingActive = false;在 UI 上下文中创建?我不是百分百确定。

到目前为止唯一有效的是Bindings.Update()在方法结束时调用OnNavigatedTo

0 投票
1 回答
282 浏览

xaml - 使用基本抽象类时,带有 ObservableCollection 的 UWP DependencyProperty 不会更新 UI

我面临着一些奇怪的行为ObservableCollection,与DependencyProperty. 我在这里创建了最小的可重现场景:https ://github.com/aosyatnik/UWP_ObservableCollection_Issue 。

有 2 个问题,我看到但无法解释。

这是我的MainViewModel

还有ItemViewModel.cs

这里是MainPage.xaml

MainPage.xaml.cs

MyItemsControl.xaml

MyItemsControl.xaml.cs

您需要执行以下步骤:

  1. 构建并运行应用程序。
  2. 请参阅有 3 个MyItemsControl使用 3 个不同的数据源-ItemsAsList和。检查并发现有 3 个来源: ItemsAsObservableCollectionItemsRecreatedListMainViewModel
    • IList<ItemViewModel> ItemsAsList
    • ObservableCollection<ItemViewModel> ItemsAsObservableCollection
    • IList<ItemViewModel> ItemsRecreatedList
  3. 单击“添加新项目”。您应该看到,第二个和第三个集合已更新。签入MainViewModel名为`AddNewItem 的方法。它应该将项目添加到每个集合中。 第一个问题:为什么item被添加到第一个collection中,但是调用了RaisePropertyChanged后UI没有更新?
  4. 停止应用程序。
  5. MyItemsControl.xaml.cs查找注释代码,取消注释并注释以前的​​代码。这IList<ItemViewModel>变为IList<BaseViewModel>
  6. 现在重建应用程序并再次运行它。尝试再次单击“添加新项目”并注意,ObservableCollection未更新。第二个问题:为什么 ObservableCollection 不再触发 getter 了?

同样,您可以在repo中找到所有这些!

感谢您的帮助,也许我错过了一些东西!我对第二个问题很感兴趣,不知道为什么它不起作用。希望,你会帮助我!

0 投票
1 回答
67 浏览

listview - FileInformation.RenameAsync() 与 StorageFile.RenameAsync() 相比会破坏绑定

当单击的项目被重命名时,是什么使以下代码破坏了 a 的绑定 FileInformation DataTemplateListView然后,如何正确通知FileInformation已重命名的视图?

考虑一个包含 2 张图片、1.jpg 和 2.jpg 的文件夹。此文件夹由 Windows 10 1909 索引,UWP 应用为 1903 版。

用户选择文件夹后,我们创建FileInformationFactory并检索VirtualizedFiles对象并将其设置为CollectionViewSource. 后者的视图填充了一个ICollectionView绑定到 ListView 的 ItemsSource 的 OneWay。

我们在列表视图中显示每个文件Name和. 重命名按钮采用 ListView.Selecteditem 并将其重命名为 1.jpg,并带有 .jpg 选项。FolderRelativeIdFileInformationGenerateUniqueName

手头有两种方法。

1)给定代码最自然的一个是使用 FileInformation.RenameAsync(),因为所选项目已经是FileInformation

2)从folder.GetFileAsync中获取Storagefile,其中name参数由FileInformation.Name给出,然后调用StorageFile.RenameAsync。

在这两种方法中,当我们重命名文件时,列表视图会按预期更新。但是,这不会持续很长时间,因为我一直在重命名,即使我给了重命名文件的时间。确实,在第一种情况下,我可以重命名文件,但是,当我不断重命名时,在某些不清楚的地方,列表视图似乎坚持以前重命名的名称并且与FolderRelativeId. 例如,文件名显示为“1 (2).jpg”,而 FoldeRelativeId 以“1 (3).jpg.jpg”结尾。listview 无法将该项目识别为 ListView 的一部分,因为我无法再选择它并且重命名会引发捕获的异常。

这个问题在场景2中似乎没有出现,为什么?如何使用方案 1(即坚持FileInformation重命名)并保持通知活动以更新 UI 而不会出现此错误?

另一个问题是如何在文件重命名后保持所选项目相同,因为经常(并非总是!)所选项目丢失(索引=-1),可能是因为 ICollectionview 已因来自通知的通知而被重置文件系统。

要查看错误,请取消注释 RenameButtonClick 事件中的行(并在上面几行注释来自 storagefile 的重命名调用)。 await fileInformation.RenameAsync("1.jpg", NameCollisionOption.GenerateUniqueName);

感谢任何帮助,因为我几天以来一直在这个问题上苦苦挣扎。谢谢

和 XAML

0 投票
3 回答
1684 浏览

c# - WPF c# .net 框架 4.8 x:Bind

我读到了“x:Bind”,它比 Binding 有更好的性能。但是在我的应用程序 WPF C# 和 .NET Framework 4.8 中,当我将 x:Bind 放在任何部分(TextBox Text="{x:Bind ...}")时,Visual Studio 对我说“Windows 演示文稿不支持绑定基金会 (WPF) 项目。”

你不可能 x:Bind 在 WPF C# Application for Desktop 中吗?或者我需要做什么才能使用它?

0 投票
1 回答
125 浏览

c# - 将 XAML 属性绑定到代码隐藏变量

我想从我的 C# 代码中设置 XAML 中的属性。我这样做的方式,它完全行不通。

XAML

代码背后

0 投票
1 回答
425 浏览

c# - 如何使用带有 null 参数的 x:Bind 函数绑定?

我正在尝试格式化对象的多个属性并将结果绑定到TextBlock使用x:Bind函数绑定。绑定看起来像这样:

只要对象不是null,它就可以完美地工作。但是,当对象为null时,我的函数不会被调用。或者更准确地说,如果对象最初为null ,调用该函数,但如果对象稍后变为null ,则不调用该函数。

为什么当参数为 null 时不调用函数,在这种情况下如何使用它?

这是一个复制品。运行它时,请注意该函数最初正确绑定到null SelectedItem并显示“未选择小部件”。但是当您选择一个项目然后取消选择它时(CTRL + 单击取消选择),它不会调用该函数并显示FallbackValue. (如果FallbackValue未设置,则根本不会更新绑定。)

主页.xaml

MainPage.xaml.cs

主视图模型.cs

小部件.cs

0 投票
2 回答
748 浏览

c# - 如何将当前列表项传递给 x:Bind 函数?

我有一个简单ListView的对象列表绑定。在ListView.ItemTemplate我想格式化每个对象并将其绑定到TextBlock使用 x:Bind 函数绑定,如下所示<TextBlock Text="{x:Bind local:MainViewModel.FormatWidget(???)}" />:但是,我不确定如何将对当前项目的引用传递给函数。

如果我需要将项目的属性传递给函数,甚至是多个属性,例如 ,这很好用<TextBlock Text="{x:Bind local:MainViewModel.FormatWidget(Name, Model)}" />,但我不知道如何传递整个对象。

我已经尝试了所有这些都无济于事:

作为一种解决方法,我可以创建并绑定到返回自身的数据项上的属性,如下所示:

但是,这是一个 hack,在我的真实项目中,我无法修改数据项类的源以添加属性。

如何将当前项目的引用传递给函数?

这是一个复制品:

主页.xaml

MainPage.xaml.cs

主视图模型.cs

小部件.cs

0 投票
1 回答
66 浏览

c# - 无法绑定到 uwp MVVM 项目中的属性

我在从视图绑定到 Viewmodel 属性时遇到问题。(UWP)

当我尝试从加载组合框项的方法中获取值时,该值始终是默认值

当我为 Employyes 加载数据时,它工作正常

一些帮助将不胜感激

0 投票
1 回答
232 浏览

c# - UWP 使用 x:Bind 监控全局变量

我有一个应用程序将所有全局变量分组到一个类中。它们用于应用程序中的许多类。(300 多个变量,为演示而缩短):

我想使用 x:Bind to One-way 将数据绑定到页面上的字段:

OneTime 绑定似乎工作正常。我可以刷新页面,并且 DateStr 反映了新值。

我将 Vars 类定义更改为:

当我尝试构建时,我收到消息:

非静态字段、方法或属性“Vars.OnPropertyChanged(string)”需要对象引用

如果我将其更改为:

我收到消息:

关键字“this”在静态属性、静态方法或静态字段初始值设定项中无效

我认为我错过了一些微不足道的事情。标记数据更改的正确方法是什么?

谢谢你的帮助。担