问题标签 [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.
uwp - X:绑定绑定下拉列表到绑定列表
我一直在弄清楚如何将下拉列表绑定到我的绑定列表框。我想显示一个列表,其中包含下拉列表中显示的所有乘客及其座位号。管理员应该能够通过下拉列表更改乘客的座位号。
我曾尝试查看嵌套绑定,但找不到任何提及我的问题的内容。
XAML
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
。
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
:
您需要执行以下步骤:
- 构建并运行应用程序。
- 请参阅有 3 个
MyItemsControl
使用 3 个不同的数据源-ItemsAsList
和。检查并发现有 3 个来源:ItemsAsObservableCollection
ItemsRecreatedList
MainViewModel
IList<ItemViewModel> ItemsAsList
ObservableCollection<ItemViewModel> ItemsAsObservableCollection
IList<ItemViewModel> ItemsRecreatedList
- 单击“添加新项目”。您应该看到,第二个和第三个集合已更新。签入
MainViewModel
名为`AddNewItem 的方法。它应该将项目添加到每个集合中。 第一个问题:为什么item被添加到第一个collection中,但是调用了RaisePropertyChanged后UI没有更新? - 停止应用程序。
- 去
MyItemsControl.xaml.cs
查找注释代码,取消注释并注释以前的代码。这IList<ItemViewModel>
变为IList<BaseViewModel>
。 - 现在重建应用程序并再次运行它。尝试再次单击“添加新项目”并注意,
ObservableCollection
未更新。第二个问题:为什么 ObservableCollection 不再触发 getter 了?
同样,您可以在repo中找到所有这些!
感谢您的帮助,也许我错过了一些东西!我对第二个问题很感兴趣,不知道为什么它不起作用。希望,你会帮助我!
listview - FileInformation.RenameAsync() 与 StorageFile.RenameAsync() 相比会破坏绑定
当单击的项目被重命名时,是什么使以下代码破坏了 a 的绑定 FileInformation
DataTemplate
?ListView
然后,如何正确通知FileInformation
已重命名的视图?
考虑一个包含 2 张图片、1.jpg 和 2.jpg 的文件夹。此文件夹由 Windows 10 1909 索引,UWP 应用为 1903 版。
用户选择文件夹后,我们创建FileInformationFactory
并检索VirtualizedFiles
对象并将其设置为CollectionViewSource
. 后者的视图填充了一个ICollectionView
绑定到 ListView 的 ItemsSource 的 OneWay。
我们在列表视图中显示每个文件Name
和. 重命名按钮采用 ListView.Selecteditem 并将其重命名为 1.jpg,并带有 .jpg 选项。FolderRelativeId
FileInformation
GenerateUniqueName
手头有两种方法。
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
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 中吗?或者我需要做什么才能使用它?
c# - 将 XAML 属性绑定到代码隐藏变量
我想从我的 C# 代码中设置 XAML 中的属性。我这样做的方式,它完全行不通。
XAML
代码背后
c# - 如何使用带有 null 参数的 x:Bind 函数绑定?
我正在尝试格式化对象的多个属性并将结果绑定到TextBlock
使用x:Bind
函数绑定。绑定看起来像这样:
只要对象不是null,它就可以完美地工作。但是,当对象为null时,我的函数不会被调用。或者更准确地说,如果对象最初为null ,则调用该函数,但如果对象稍后变为null ,则不调用该函数。
为什么当参数为 null 时不调用函数,在这种情况下如何使用它?
这是一个复制品。运行它时,请注意该函数最初正确绑定到null SelectedItem
并显示“未选择小部件”。但是当您选择一个项目然后取消选择它时(CTRL + 单击取消选择),它不会调用该函数并显示FallbackValue
. (如果FallbackValue
未设置,则根本不会更新绑定。)
主页.xaml
MainPage.xaml.cs
主视图模型.cs
小部件.cs
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
c# - 无法绑定到 uwp MVVM 项目中的属性
我在从视图绑定到 Viewmodel 属性时遇到问题。(UWP)
当我尝试从加载组合框项的方法中获取值时,该值始终是默认值
当我为 Employyes 加载数据时,它工作正常
一些帮助将不胜感激
c# - UWP 使用 x:Bind 监控全局变量
我有一个应用程序将所有全局变量分组到一个类中。它们用于应用程序中的许多类。(300 多个变量,为演示而缩短):
我想使用 x:Bind to One-way 将数据绑定到页面上的字段:
OneTime 绑定似乎工作正常。我可以刷新页面,并且 DateStr 反映了新值。
我将 Vars 类定义更改为:
当我尝试构建时,我收到消息:
非静态字段、方法或属性“Vars.OnPropertyChanged(string)”需要对象引用
如果我将其更改为:
我收到消息:
关键字“this”在静态属性、静态方法或静态字段初始值设定项中无效
我认为我错过了一些微不足道的事情。标记数据更改的正确方法是什么?
谢谢你的帮助。担