如何将 BindableLayout.ItemsSource 设置为其他文件中的 ObservableCollection

2023-12-08

目前我有一个 TasksGroupPageViewModel.cs,其中包含我的两个 ObservableCollection:

public ObservableCollection<TasksGroup> TasksGroups { get; set; } = new ObservableCollection<TasksGroup>();
public ObservableCollection<Tasks> Taches1 { get; set; } = new ObservableCollection<Tasks>();

使用 TasksGroups 数据的 CollectionView 的绑定有效,但我内部有一个可绑定的堆栈布局,但我无法将其绑定到他的 ObservableCollection 数据(taches1)

从调试器中我可以看到它总是尝试从 Models.TaskGroup.cs 而不是 Models.Tasks.cs 访问数据,就像因为我的 stacklayout 是 CollectionView 的子级,所以我无法绑定到它

我的问题是:我如何直接绑定到 TaskGroupPageViewModel 中的 Taches1 ObservableCollection 和 BindableLayout.ItemsSource="" 或 .xaml.cs 文件,但我没有找到一种方法来做到这一点,就像我在出现的 TasksGroup 中所做的那样方法

我如何在 TaskGroupPage.xaml.cs 中初始化数据(data1 用于 TasksGroup,data2 用于 Tasks :

 protected override async void OnAppearing()
   {
        base.OnAppearing();

        var data2 = await App.Database.GetAllTasks();
        var data1 = await App.Database.GetTaskGroupsAsync();

        var vm = this.BindingContext as TasksGroupPageViewModel;
        vm.TasksGroups = new ObservableCollection<TasksGroup>(data1);
        TasksGroupCollection.ItemsSource = vm.TasksGroups;
    
        vm.Taches1 = new ObservableCollection<Tasks>(data2);
}

我如何使用 x:Name=TasksGroupCollection 绑定到我的集合视图

        <CollectionView Grid.Row="2" Margin="25" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"
                SelectionMode="Single" x:Name="TasksGroupCollection" >

在这个 CollectionView 中,我有一个可绑定的堆栈布局,我想将其绑定到 Taches1 数据

                                      <StackLayout Grid.Column="2" Spacing="10" >
                                                <Label Text="Tâches" TextColor="Black" FontSize="15" Margin="20,0"/>
                                                <StackLayout BindableLayout.ItemsSource="{Binding }"  HorizontalOptions="Start" VerticalOptions="Center" Margin="20,0,0,20" x:Name="Taches1">
                                                    <BindableLayout.ItemTemplate >


                                                    <DataTemplate>
                                                            <Label TextColor="#2F3246" FontSize="12">
                                                                <Label.FormattedText>
                                                                    <FormattedString>
                                                                        <FormattedString.Spans>
                                                                            <Span Text="{Binding TaskDBA}"/>
                                                                            <Span Text=" - "/>
                                                                            <Span Text="{Binding TaskDescription}" FontAttributes="Bold"/>
                                                                        </FormattedString.Spans>
                                                                    </FormattedString>
                                                                </Label.FormattedText>
                                                            </Label>


                                                        </DataTemplate>
                                                        </BindableLayout.ItemTemplate >
                                                </StackLayout>

                                                
                                            </StackLayout>

从调试器中我可以看到它总是尝试访问来自 Models.TaskGroup.cs 而不是 Models.Tasks.cs

当任何元素包含在DataTemplate, the BindingContext将是模板的 ItemsSource 中的当前项目。

Your TasksGroupCollection.ItemsSource is vm.TasksGroups并且没有名为Taches1 in vm.TasksGroups,这就是为什么你无法绑定成功的原因。

解决方案:

Taches1是一个属性vm并且您应该设置正确的绑定源:

首先,为您的 ContentPage 命名,假设为 MyPage:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"

             x:Name="MyPage"

             x:Class="App266.MainPage">

然后bindingContext你的页面是vm,绑定BindableLayout.ItemsSource to vm.Taches1 :

<StackLayout BindableLayout.ItemsSource="{Binding BindingContext.Taches1 , Source={x:Reference MyPage}}"  HorizontalOptions="Start" VerticalOptions="Center" Margin="20,0,0,20" x:Name="Taches1">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 BindableLayout.ItemsSource 设置为其他文件中的 ObservableCollection 的相关文章

  • 使用内部构造函数实例化类

    我有一个类 其构造函数被定义为内部 这意味着我无法实例化它 虽然这可能有道理 但出于调试和研究目的 我仍然愿意做一次 是否可以通过反射来做到这一点 我知道我可以访问私有 内部成员 但是我可以调用内部构造函数吗 或者 由于构造函数没有做任何重
  • boost::interprocess 准备好迎接黄金时间了吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在开发一个由内存映射文件支持的线
  • 在两个 .cpp 文件之间定义全局变量 [重复]

    这个问题在这里已经有答案了 如何在 A cpp 和 B cpp 之间共享 全球化 bool 变量 其中它们都不包含其他 h 文件 他们有其他联合头文件 但彼此没有 我可以在这些共享标头中定义全局变量吗 Thanks 我可以在这些共享标头中定
  • 实体框架中的重复键异常?

    我试图捕获当我将具有给定用户名的现有用户插入数据库时 引发的异常 正如标题所说 我正在使用 EF 当我尝试将用户插入数据库时 引发的唯一异常是 UpdateException 如何提取此异常以识别其是否是重复异常或其他异常 catch Up
  • .NET Windows 服务中调用 C# 的 wait 的 I/O 回调是否可以不阻塞?

    我知道在 ASP NET 中 当使用 wait 时工作线程会返回到池中 而 I O 发生在后台 这对于可扩展性非常有用 我的 Windows 服务是一个套接字服务器 它使用 Begin End 样式的异步套接字 I O 混合我的魔法 我知道
  • WPF - 按多列排序时使用自定义比较器

    我有一个 ListView GridView 我想按 2 列排序 因此如果第 1 列中有 2 个以上的项目具有相同的值 它将按第 2 列排序 非常简单 但是在对 A Z 进行排序时 空字符串会出现在顶部 我想把它们移到底部 我制作了一个比较
  • 禁用除滚动之外的 DataGridView

    我如何配置 datagridview 以便用户只能在行中移动并使用滚动 而没有其他 如果我禁用网格不允许我使用滚动 将您的 datagridview 设置为只读 这将禁用任何编辑 dataGridView1 ReadOnly true 在你
  • 当我尝试使用 AVX 功能时,Clang 生成错误

    我使用的是 Windows 10 使用 Clang 版本 5 最近安装 当我编译以下内容时 define AVX define AVX2 include
  • 未定义异常变量时通过引用捕获

    捕获异常时 标准指导是按值抛出 按引用捕获 据我了解 这有两个原因 如果由于内存不足异常而引发异常 我们将不会调用可能终止程序的复制构造函数 如果异常是继承层次结构的一部分 我们可能会对异常进行对象切片 如果我们有一个场景 我们没有在 ca
  • Windows 程序如何临时更改其时区?

    我写了一个函数来返回time t与给定日期的午夜相对应的值 当给定日期没有午夜时 它返回最早可用的时间 例如 当埃及进入夏令时时 这种情况就可能发生 今年 时间更改于 4 月 29 日晚上午夜生效 因此时钟直接从 23 59 转到 01 0
  • Type_traits *_v 变量模板实用程序顺序无法编译

    看过了这个答案 https stackoverflow com a 31763111 7151494 我试图想出一个变量模板从中获取代码的实用程序 template
  • 我们应该使用 Eval 还是 Databind 事件?

    当使用 Asp Net 并使用 ListView 等控件创建网站时 使用 Eval 命令是一个好习惯吗 还是应该在 databind 事件中填充文字和数据 取决于您是否想在更新事件上写回数据 在这种情况下数据绑定 如果您只想读取该数据 可以
  • 使用对象列表构建树

    我有一个带有属性 id 和parent id 的对象列表 我想建造一棵树来连接那些孩子和父母 1 个父对象可以有多个子对象 并且有一个对象将成为所有对象的祖先 实现该功能最快的算法是什么 我使用 C 作为编程语言 但其他语言也可以 像这样的
  • 如何使用 C# 代码使用超链接的 onClick 事件?

    我正在尝试为页面中的超链接添加条件 而不是仅仅使用特定的链接 例如 a href help Tutorial html Tutorial a 我想为不同的用户显示不同的页面 例如 如果用户以管理员身份登录 他们将看到与普通用户不同的链接 我
  • AspNetCore.SignalR:无法启动未处于初始状态的连接

    我无法让 ASP NET Core SignalR 应用程序正常运行 我有这个服务器端代码 public class PopcornHub Hub private int Users public async Task BroadcastN
  • 函数模板重载解析期间的 MSVC 与 Clang/GCC 错误,其中一个函数模板包含参数包

    当我使用参数包时 我注意到这样一种情况 如下所示 在 gcc 和 clang 中编译得很好 但在 msvc 中却不行 template
  • 检索 Autofac 容器以解析服务

    在 C WindowForms 应用程序中 我启动一个 OWIN WebApp 它创建另一个类 Erp 的单例实例 public partial class Engine Form const string url http 8080 49
  • 如何在Linux上构建GLFW3项目?

    我已经使用 cmake 和 make 编译了 glfw3 和包含的示例 没有出现任何问题 开始编写我的第一个项目 作为 opengl 和 glfw 的新手 并且对 C 和 CMake 没有经验 我正在努力理解示例构建文件 甚至要链接哪些库和
  • Intel 和 AMD 处理器有相同的汇编程序吗?

    C语言被用来编写Unix以实现可移植性 使用不同编译器编译的同一个C语言程序会产生不同的机器指令 为什么 Windows 操作系统能够在两者上运行Intel https en wikipedia org wiki Intel and AMD
  • XmlDocument Save 使文件保持打开状态

    我有一个简单的 C 函数 可以创建一个基本的 XML 文件并保存 private void CreateXMlFile string Filename string Name string Company XmlDocument doc n

随机推荐

  • 无法获取托管类型的地址、获取其大小或声明指向托管类型(“类型名称”)的指针

    如果我的结构中有一个或多个 System String 此错误将停止编译还有其他方式存储字符串吗 我尝试过这样的事情 private long B ID private byte C Name private byte C Address
  • 互斥体未释放

    我的 c WinForm 解决方案包含多个项目 其中包括包含 frmAdmin 的管理项目和包含 frmUser 的用户项目 第三个项目包含 frmTimer 它有一个定期启动 frmUser 的计时器 我希望 frmTimer 在 frm
  • 仅使用生产证书时无法注册推送通知

    使用开发证书时 推送通知工作正常 当我在临时发行版中切换到生产证书时 应用程序无法注册推送通知 在 UIApplicationDelegate 中 两者都没有didRegisterForRemoteNotificationsWithDevi
  • Java Swing,尝试用图像图标复选框替换 JTable 中的布尔复选框

    所以我有一个带有复选框的 JTable 我希望复选框在 选中 时包含一个图像 在 未选中 时包含另一图像 即显示图像而不是选中或未选中的框 有没有办法做到这一点 我尝试过使用 TableCellRenderer 返回带有 ImageIcon
  • 自反传递闭包的定义

    许多谓词本质上使用某种形式的传递闭包 只是发现终止也必须得到解决 为什么不一劳永逸地解决这个问题closure0 3 meta predicate closure0 2 meta predicate closure 2 meta predi
  • 第 n 个范围的 CSS 选择器?

    如何调整下面的 CSS 选择器 myTableRow td nth child background color FFFFCC 所以它适用于td列2 4 table tr class myTableRow td column 1 td td
  • 有没有办法将 Linux 共享库加载到特定的内存位置?

    我有一个 Linux 应用程序 它在运行时加载非常小的 一些小函数 共享库 由于各种重要原因 我需要将共享库加载到特定的虚拟内存范围 然而 dlopen 没有提供任何方法 我可以看到 来告诉它或提示它 将其加载的内容放在哪里 有没有办法告诉
  • 导入错误:没有名为“app”的模块

    我正在开发一个具有以下树结构的项目 Project app main py svg to png py init py tests init py unittests basic test py init py 我正在使用以下命令将应用程序
  • Google App Engine - 数据存储实体的 ID 是否会为负数?

    数据存储实体的 ID 是否会为负数 或者它们保证是正数吗 我找不到明确说明这一点的文档 但我从未见过负面的文档 这docs确实 随着新实体的创建 这一数字通常会增加 但不应严格依赖它们 因为您可能会得到稍微乱序的 id 例如 10 11 1
  • 用 mod 重写删除尾部斜杠?

    这与我之前的问题有关 可以查看here 我希望能够删除 URL 中的尾部斜杠 这样它就不会弄乱我网站的某些区域 htaccess 代码在这里 s File Exists RewriteCond REQUEST FILENAME s OR l
  • Rails 3 中不带尾部斜杠的重定向到规范路线

    在 Rails 3 上 我尝试从没有尾部斜杠的 URL 重定向到有斜杠的规范 URL match test to gt redirect test 但是 上面的路由同时匹配 test 和 test 导致重定向循环 如何使其仅匹配不带斜杠的版
  • 如何在C++中生成随机数?

    我正在尝试用骰子制作游戏 并且需要其中包含随机数 以模拟骰子的侧面 我知道如何使其在 1 到 6 之间 使用 include
  • isolatedStorage:删除卸载程序中的首选项?

    我们的应用程序将用户首选项保存在独立存储中 然而 事实证明 从我们的卸载程序中删除这些文件是很棘手的 我可以枚举隔离存储中的所有文件 使用 MSDN 示例代码 找到与我们的强名称密钥相关的文件 并尝试删除 删除它们 不幸的是 这就是一切崩溃
  • 如何运行后台线程定期清理列表中的某些元素?

    我目前正在实施缓存 我已经完成了基本的实现 如下所示 我想要做的是运行一个线程来删除满足某些条件的条目 class Cache int timeLimit 10 how long each entry needs to be kept af
  • 为什么在 clojure 中 will (seq #{3 1 22 44}) 会输出 (1 3 44 22) ?

    它是如何工作的 序列 3 1 22 44 为什么顺序会像 1 3 44 22 因为根据定义 集合数据结构是无序的 http en wikipedia org wiki Set data struct 更准确地说 Clojure 的内置集 b
  • 如何在事件侦听器中将元素作为参数传递

    我有一个程序 其中有大量可重用元素 所有这些元素都需要事件侦听器 因此 我需要一种从侦听器获取元素的方法 这是我想在代码中执行的操作 document querySelectorAll class forEach function el e
  • Telegram 机器人等待用户回复

    下面的代码是针对电报机器人这基本上需要一个人username and password并验证它以提供他的平均支出 我们看到的问题是机器人等待用户发送他的用户名和密码10 sec要么浪费时间 要么 没有给予足够的时间 我怎样才能编程 让机器人
  • 模拟用户在 QSystemTrayIcon 中单击

    即使通过activated插槽正在执行 菜单仍未显示 我通过手动单击托盘图标和模拟单击进行了跟踪 并且其执行逻辑相同 目前我有 class MyClass QObject def init self testSignal connect s
  • ServletActionContext.getRequest() 返回 NULL

    我正在处理使用 Servlet 和 Struts2 的混合情况 我正在调用 HTTPServlet 并在其中处理数据 然后我需要调用struts API来将数据插入数据库 我也在使用 HTTPSession 所以我打电话 ServletAc
  • 如何将 BindableLayout.ItemsSource 设置为其他文件中的 ObservableCollection

    目前我有一个 TasksGroupPageViewModel cs 其中包含我的两个 ObservableCollection public ObservableCollection