相对源绑定 Xamarin

2023-11-30

我的问题是视单元,由于它属于 IssueModel 类,所以找不到 OnDelete 命令,我尝试更改 Listview 的绑定上下文,但这不会改变除上述绑定之外的任何内容。

有什么方法可以更改视单元的绑定上下文,这样我就不必将命令放入 IssueModel 中?

freshMvvm:FreshBaseContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:converters="clr-namespace:ASFT.Converters;assembly=ASFT"
             xmlns:freshMvvm="clr-namespace:FreshMvvm;assembly=FreshMvvm"
             xmlns:helperMethods="clr-namespace:ASFT.HelperMethods;assembly=ASFT"
             x:Class="ASFT.Pages.IssueListPage">
    <ContentPage.Resources>
        <ResourceDictionary>
            <converters:SelectedItemEventArgsToSelectedItemConverter x:Key="SelectedItemConverter" />
            <converters:DateTextConverter x:Key="DateToTextConverter" />
        </ResourceDictionary>
    </ContentPage.Resources>
<ListView ItemsSource="{Binding Issues}" SeparatorColor="#444444" RowHeight="90" IsPullToRefreshEnabled="True" IsRefreshing="{Binding IsBusy}" RefreshCommand="{Binding PullRefreshCommand}" >
        <ListView.Behaviors>
        <helperMethods:EventToCommandBehavior EventName="ItemSelected" 
                                          Command="{Binding OnSelectedIssueCommand}" 
                                          Converter="{StaticResource SelectedItemConverter}" />
        </ListView.Behaviors>
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell >
                    <ViewCell.ContextActions>
                        <MenuItem  Command="{Binding OnDelete}"  Text="Delete" IsDestructive="True" />
                    </ViewCell.ContextActions>

                    <ViewCell.View>
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto"></RowDefinition>
                                <RowDefinition Height="Auto"></RowDefinition>
                                <RowDefinition Height="*"></RowDefinition>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="70"></ColumnDefinition>
                                <ColumnDefinition Width="*"></ColumnDefinition>
                                <ColumnDefinition Width="50"></ColumnDefinition>
                            </Grid.ColumnDefinitions>

                            <Image Grid.Row="0" Grid.RowSpan="3" Grid.Column="0" Source="{Binding SeverityImagePath}" HorizontalOptions="Center" VerticalOptions="Center" HeightRequest="70"/>
                            <Image Grid.Row="0" Grid.RowSpan="3" Grid.Column="2" Source="{Binding StatusImagePath}" HorizontalOptions="Center" VerticalOptions="Center" HeightRequest="60"/>

                            <Label Grid.Row="0" Grid.Column="1" Text="{Binding Title}" LineBreakMode="TailTruncation" YAlign="Center" VerticalOptions="Start" Font="Bold, Medium"/>
                            <Label Grid.Row="1" Grid.Column="1" Text="{Binding Created, Converter={StaticResource DateToTextConverter}}" YAlign="Center" VerticalOptions="Start" Font="Medium"/>
                            <Label Grid.Row="2" Grid.Column="1" Text="{Binding Description}" LineBreakMode="WordWrap" YAlign="Start" VerticalOptions="Start" Font="Small"/>
                        </Grid>

                    </ViewCell.View>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

</freshMvvm:FreshBaseContentPage>

Edit:

我尝试过其中一个答案,但没有成功。这只会收到一条错误消息:预期类型是对象,但类型是 IssueListPageModel

     xmlns:pageModels="clr-namespace:ASFT.PageModels;assembly=ASFT"



 <MenuItem Command="{Binding Path=BindingContext.OnDelete, Source={pageModels:IssueListPageModel}}" Text="Delete" IsDestructive="True" />

Add a x:Name归因于你的freshMvvm:FreshBaseContentPage,就像:x:Name="MyAwesomePage".

现在改变你的ViewCell像这样绑定:

<MenuItem Command="{Binding Path=BindingContext.OnDelete, Source={x:Reference Name=MyAwesomePage}}" Text="Delete" IsDestructive="True" />

现在,通过使用页面名称将绑定源设置为页面。并且路径设置为属性BindingContext.OnDelete。因此,在此页面的后备视图模型中应该有一个OnDelete财产。

为了澄清单独的组件,就像您在评论中所问的那样。

The Path=在常规绑定中被省略。当没有明确提及时,{Binding MyProperty}与“{Binding Path=MyProperty}”含义相同。Path表示需要绑定的值的路径BindingContext,因此实际上是您要绑定的属性。

The Source用于指定的来源是什么Path。这本身就是另一种约束。在我们的例子中,引用是通过我们刚刚给出的页面名称得知的。这样,就可以绑定ViewCell知道从Source然后搜索Path来检索它的值。我希望这能让它变得清楚一些。

如果您愿意,您可以在此处引用任何内容,只要您有权访问此处类的实例即可。不过,我建议将其保留在BindingContext这实际上是视图模型(注意:BindingContext是包含视图模型的页面的实际属性)。否则你很快就会失去概览。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相对源绑定 Xamarin 的相关文章

  • OpenCv读/写视频色差

    我试图简单地使用 openCV 打开视频 处理帧并将处理后的帧写入新的视频文件 我的问题是 即使我根本不处理帧 只是打开视频 使用 VideoCapture 读取帧并使用 VideoWriter 将它们写入新文件 输出文件看起来比输入更 绿
  • 迭代变量并查找特定类型实例的技术

    我想迭代进程中内存中的变量 通过插件动态加载 并查找特定类型的实例 以前我可以找到特定类型 或内存中的所有类型 我可以创建类型的实例 我可以获取作为不同类型的字段包含的实例 但我无论如何都不知道只是 搜索 特定类型的实例 一种方法是使用 W
  • 使用具有现有访问令牌的 Google API .NET 客户端

    用例如下 移动应用程序正在通过 Google 对用户进行身份验证 并且在某些时候 我们需要将用户的视频发布到他的 YouTube 帐户 出于实际原因 实际发布应该由后端完成 已经存储在那里的大文件 由于用户已经通过应用程序的身份验证 因此应
  • 32 位应用程序的特征最大矩阵大小

    所以 我正在寻找Eigen http eigen tuxfamily org index php title Main Page当我尝试声明大于 10000x10000 的矩阵时 包崩溃 我需要声明一个像这样的矩阵 可靠地大约有 13000
  • 显示异常时的自定义错误消息:从客户端检测到潜在危险的 Request.Form 值

    我在我的 Web 应用程序中使用 ASP NET 的登录控件 当发生此异常时 我想在标签上显示一种有趣的错误类型System Web HttpRequestValidationException A potentially dangerou
  • POCO HTTPSClientSession 发送请求时遇到问题 - 证书验证失败

    我正在尝试使用 POCO 库编写一个向服务器发出 HTTPS 请求的程序 出于测试目的 我正在连接到具有自签名证书的服务器 并且我希望允许客户端进行连接 为了允许这种情况发生 我尝试安装InvalidCertificateHandler这是
  • WPF - 路径几何...有没有办法绑定数据属性?

    我有一个ControlTemplate作为 气泡 弹出窗口AdornerLayer给定的控制 它工作正常 但我需要能够计算它应该显示的位置 中间 底部 代替
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • C# 中条件编译符号的编译时检查(参见示例)?

    在 C C 中你可以这样做 define IN USE 1 define NOT IN USE 1 define USING system 1 system 1 IN USE 进而 define MY SYSTEM IN USE if US
  • 为什么我不应该对不是由 malloc() 分配的变量调用 free() ?

    我在某处读到 使用它是灾难性的free删除不是通过调用创建的对象malloc 这是真的 为什么 这是未定义的行为 永远不要尝试它 让我们看看当您尝试时会发生什么free 自动变量 堆管理器必须推断出如何获取内存块的所有权 为此 它要么必须使
  • 通过 NHibernate 进行查询,无需 N+1 - 包含示例

    我有一个 N 1 问题 我不知道如何解决它 可以在这个问题的底部找到完全可重复的样本 因此 如果您愿意 请创建数据库 设置 NUnit 测试和所有附带的类 并尝试在本地消除 N 1 这是我遇到的真实问题的匿名版本 众所周知 这段代码对于帮助
  • 尚未处理时调用 Form 的 Invoke 时出现 ObjectDisposeException

    我们得到一个ObjectDisposedException从一个电话到Invoke在尚未处理的表格上 这是一些演示该问题的示例代码 public partial class Form2 Form void Form2 Load object
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使
  • 将事件绑定到 ItemsControl 中的按钮

    我有一个 Windows Phone 7 应用程序 其中包含一些 xaml 如下所示
  • 为什么拆箱枚举会产生奇怪的结果?

    考虑以下 Object box 5 int int int box int 5 int nullableInt box as int nullableInt 5 StringComparison enum StringComparison
  • 双精度类型二维多维数组的 pinvoke 编组作为 c# 和 c++ 之间的输入和输出

    我有以下我正在尝试解决的双物质类型的 2d 多维数组的 c 和 c pinvoke 编组 我已经查看了以下热门内容以获得我目前拥有的内容使用双精度数组进行 P Invoke 在 C 和 C 之间编组数据 https stackoverflo
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • 实例化 Microsoft.Office.Interop.Excel.Application 对象时出现错误:800700c1

    实例化 Microsoft Office Interop Excel Application 以从 winforms 应用程序生成 Excel 时 出现以下错误 这之前是有效的 但突然间它停止工作了 尽管代码和 Excel 版本没有变化 我
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop

随机推荐

  • Javascript 计算字符串中字母的频率

    我一直在尝试找出这个练习的答案 但一定有一个我看不到的错误 我将分享练习的描述 我的代码以及最后的输出 描述 现在我们将把每个数组的最长长度保存在一个名为 array lengths 的新数组中 打开控制台并重新加载索引页以查看代码的结果
  • 在 Hyperledger Composer 交易中以确定性方式获取时间戳

    是否有一种确定性的方法可以在事务函数中获取时间戳 类似于可以在 Go 版本的 Fabric 链码中使用的 stub GetTxTimestamp 只是分享一个适用于的示例basic sample network网络 在模型文件中 lib o
  • 负面展望未按预期发挥作用

    我有一个奇怪的情况积极的前瞻按预期工作 但是负前瞻没有 请看一下下面的代码
  • 如何创建 3 路 ManyToMany 关系 django

    需要在 django admin 中对服务器 应用程序和服务器角色之间的关系进行建模 服务器可以有one or 许多应用 应用程序可以托管在one or many服务器 A Server has one or many roles for
  • 为什么在 TypeScript 中,接口中可能的数值可以转换为类实现中不可能的数值?

    今天我遇到了一个意想不到的 TypeScript 编译器行为 我想知道这是一个错误还是一个功能 可能这将是最后一个 但我想知道其背后的理由 如果我声明一个接口方法 其参数可以是string number 并创建一个实现该接口的类 那么该类方
  • 从 firebase 获取特定类别的数据

    我想对 Firebase 实时数据库中的数据进行分类 然后按类别选择它们以显示在我的 android 视图的不同部分中 但我不知道从哪里开始 我是 Firebase 的新手 我所知道的就是如何提取数据 推送到 Firebase 数据库并显示
  • 告诉转义的十六进制在字符串中结束的位置[重复]

    这个问题在这里已经有答案了 我想打印 10 Celsiusprintffunction 通常我会这样做 printf 10 xF8Celsius 其中 xF8 是度数符号的 ANSI 代码 问题是编译器获取 x 之后的所有十六进制字符并尝试
  • Android Studio:新项目与新模块

    Android Studio 使用的概念modules 而其他 IDE 例如 Eclipse 则使用projects 然而ASFile菜单可以选择创建一个New Module以及ASAnew Project 如果有的话 这两者之间有什么区别
  • 在 Big Sur 上使用 perlbrew 安装 perl 时出错

    我正在尝试使用 perlbrew 在 macOS 环境中安装 perl 版本 5 33 4 我无法理解为什么它在安装过程中失败 我开始使用安装 perlbrew curl L https install perlbrew pl bash 然
  • MVC4 中表的 Foreach 循环

    我正在使用 C 在 MVC4 中完成我的项目 我的模型中有一个 IEnumerable 列表 我使用以下循环来列出我的观点 table tbody foreach var item in Model tr td Rtn item Mem N
  • 替换单个换行符,保留多个[重复]

    这个问题在这里已经有答案了 我正在解析一个文本文件 并希望删除所有段落内换行符 同时实际上保留形成新段落的双换行符 例如 这是我的第一首诗 n没有意义 n它应该走多远 没有人知道 n n这里是一秒钟 n那并不长 再见 n n 打印出来后 应
  • 如何修复:类文件 com/sun/org/apache/xerces/internal/impl/xs/XMLSchemaValidator 中的未知常量标记 32

    今天早些时候我遇到了以下异常 Unknown constant tag 32 in class file com sun org apache xerces internal impl xs XMLSchemaValidator 我没有做任
  • 有没有办法从堆栈溢出下载所有问题和答案?

    我有兴趣查看网站使用情况 问题类型和堆栈溢出的答案 有没有办法下载全部内容 我考虑过使用 beautiful soup 或类似的网页抓取作为一种选择 但我认为有如此多的专家用户 可以通过 API 轻松获得信息 是的 正如你猜的那样 有一个
  • Quartz.NET 运行作业自行重新安排?

    我完全以编程方式创建了一个 Quartz NET 作业 没有配置文件等 它按计划运行良好 该作业使用 cron 字符串初始化 每 5 分钟运行一次 我想让作业根据环境更改其自身的计划 例如 随着时间的推移会发生错误 因此 cron 应该更改
  • PublishJMS 处理器无法将消息写入 IBM Websphere MQ

    我在通过 PublishJMS 处理器将消息发布到 IBM Websphere MQ 队列时遇到问题 配置PublishJMS处理器和JMS控制器服务 我已经验证MQ连接没有问题 我相信我需要在 PublishJMS 或控制器服务中设置一些
  • 当我选择 UITableViewCell 时,我的视图控制器标签是后面的操作

    我有一个带有表视图的视图控制器 我还有一种方法 当选择表视图的单元格之一时 该方法应该推送到新的视图控制器 新的视图控制器包含一个标签 我希望该标签显示所选单元格内容的全文 目前 当选择单元格时 先前选择的单元格的内容会显示在标签上 这是我
  • 如何在 Haskell 中向 Functor 实例声明添加类约束?

    我定义了以下数据类型 data Probability a PD mass a Ratio Int 现在我想写它是一个实例Functor collect Eq a Num b gt a b gt a b collect al map col
  • 短文本,PHP

    我得到了这个功能 function shorter text chars limit if strlen text gt chars limit return substr text 0 strrpos substr text 0 char
  • Firebase:添加新子项

    当我的应用程序启动时 我会对 Firebase 进行初始提取以提取所有数据 当我稍后将数据添加到 Firebase 时 我只希望它获取已添加的新子项 我目前正在实现这样的目标 有没有更好的方法或内置方法可以在 Firebase 中执行此操作
  • 相对源绑定 Xamarin

    我的问题是视单元 由于它属于 IssueModel 类 所以找不到 OnDelete 命令 我尝试更改 Listview 的绑定上下文 但这不会改变除上述绑定之外的任何内容 有什么方法可以更改视单元的绑定上下文 这样我就不必将命令放入 Is