将事件绑定到 ItemsControl 中的按钮

2024-05-20

我有一个 Windows Phone 7 应用程序,其中包含一些 xaml,如下所示:

<Grid x:Name="ContentGrid" Grid.Row="1">
    <ItemsControl x:Name="MyView" ItemTemplate="{StaticResource MyInner}"/>
</Grid>

这里的项目模板如下所示:

<DataTemplate x:Key="MyInner">
    <ItemsControl ItemsSource="{Binding}" ItemTemplate="{StaticResource MyInner_Item}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>
</DataTemplate>

最后,MyInner_Item 模板如下所示:

<DataTemplate x:Key="MyInner_Item">
    <Button x:Name="MyButton">
        <Button.Template>
            <ControlTemplate>
                <Border HorizontalAlignment="Center" VerticalAlignment="Center" x:Name="myborder">

                    <Image Source="{Binding Path=ImageUri}" Width="{Binding Path=Width}" Height="{Binding Path=Height}" Stretch="Fill" />
                </Border>
            </ControlTemplate>
        </Button.Template>
    </Button>
</DataTemplate>

因此,它是一个 ItemsControl,其中包含一个 ItemsControl,其中又包含按钮。这实质上创建了一个二维按钮数组。

我想要做的是将事件处理程序添加到按钮的 Click 事件中。

问题是:这背后的代码是用 F# 编写的。据我所知,我无法在 XAML 中指定我的事件处理程序,因为 F# 无法以任何良好的方式与 WPF 通信。所以我需要在代码中手动添加事件处理程序。

有一个简单的方法可以做到这一点吗?

目前,我有一些 F#,如下所示:

let myView : ItemsControl = this?MyView
do myView.ItemsSource <- viewModel.BoardData 

这里,BoardData 是列表的列表。

我想知道是否可以循环遍历 ItemsControl 中的控件来添加我的事件处理程序?不过,我在做这件事时遇到了一些麻烦。例如,在以下内容中:

let container = myView.ItemContainerGenerator.ContainerFromItem(myView.Items.[0])

...将容器设置为空。事实上,我从 myView.ItemContainerGenerator 尝试过的所有方法都返回 null。

那么,我应该如何附加我的事件处理程序,以便我可以响应被单击的按钮?


我没有进行过任何 Windows 7 Phone 开发,但我已经使用 C# 进行了大量的 XAML + Silverlight 开发,现在我开始进行一些 F# 开发。我采取的方法是根本不使用事件处理程序。由于您使用的是按钮,因此创建一个派生自的类ICommand http://msdn.microsoft.com/en-us/library/system.windows.input.icommand.aspx并将该类型添加为 ViewModel 上的公共属性,以便您可以将其绑定到Command按钮的属性。使用的好处ICommand事件处理程序的接口是,您还可以有一个条件,即何时启用按钮来执行操作。

另外,请注意,当您进行绑定表达式时内(即 ItemTemplate)中的项目ItemsControl控制,您可以绑定的属性范围缩小为当前的属性item.因此 ViewModel 的所有属性都超出了范围,unless您完全指定它,即<Button Command={Binding Source=ViewModel, Path=Property1.Property2.etc} />。让我知道这是否有帮助。

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

将事件绑定到 ItemsControl 中的按钮 的相关文章

  • 如何在 F# 中使用 LINQ 更新数据库中的表?

    我看过很多有关如何查询数据库的示例 但没有看到有关如何更新记录的示例 下面是我编写的用于检索表的简单代码 但有人可以解释一下如何修改字段 例如lastActiveDate 并更新数据库上的表 谢谢你 周日 open System open
  • 将可见性属性绑定到变量

    我有一个Border with Label里面一个Window
  • 按下按钮时更改几何绘图画笔的颜色

    我创建了一个按钮模板 有一个图像和一个标签 图像的来源位于 ResourceDictionary Pictures 中 图片的来源是具有白色画笔颜色的 DrawingImage
  • xaml.cs 文件上的 InitializeComponent() 出现错误

    有时我会收到一个红色错误 内容如下 InitializeComponent 在当前上下文中不存在 以及我的其他变量 xaml受约束的x Name The x ClassXaml 文件中的名称空间和类名确实对应于我的xaml cs file
  • 如何在c# wpf中获取元素的标签?

    我正在尝试使用 WPF 构建一个 GUI 在其中我可以绘制一些基本形状并将它们存储到 xml 文件中 形状是在 xaml 文件中设计的 我为每个形状添加了标签 现在我想在代码中获取它们的标签值 并将其作为属性存储在输出 xml 文件中 例如
  • ListBox 内的 WP7 TextBlock 不换行文本

    我有一个ListBox其中有StackPanels 拿着一个TextBlock and an Image水平方向 然后是ContentPresenter XAML 如下所示
  • .Net 中可用的并行技术

    我是 Net 平台的新手 我查了一下 发现 Net中有几种做并行计算的方法 任务并行库中的并行任务 即 Net 3 5 PLINQ Net 4 0 异步编程 Net 2 0 异步主要用于执行 I O 繁重的任务 F 有简洁的语法支持这一点
  • int -> int list 与类型 int -> IEnumerable<'a> 不兼容

    Given open System Linq 这是一个可以接受的表达方式 2 3 4 SelectMany fun n gt 1 n 但这不是 2 3 4 SelectMany fun n gt 1 n 错误消息显示 int gt int
  • WP8.1 C# 绑定联系人图像

    信息很简单 我正在尝试创建一个可以显示用户联系人的应用程序 我也是一名自学成才的程序员 所以我在某些方面有编程经验 但总体来说我对数据绑定相对较新 首先 我有一个 ListView 控件 其中包含图像绑定
  • 由于图形处理单元配置,不支持 Windows Phone 模拟器(Mac 上的 Windows 7)

    启动 Windows Phone 模拟器时出现错误 不支持 Windows Phone 模拟器 因为您的计算机没有所需的图形处理单元配置 如果没有图形处理单元 XNA 框架页面将无法运行 您想继续启动模拟器吗 当我尝试访问网页 任何网页 时
  • 虚拟乐器 iPhone 应用程序中的 VoiceOver 辅助功能?

    我收到盲人用户的评论 称我的一些声音和音乐相关应用程序只能在关闭 VoiceOver 的情况下使用 在 iOS 设备上启用 VoiceOver 辅助功能后 是否可以启用音乐键盘或鼓垫触摸区域 以便在点击键盘键或虚拟鼓组 等 时可以立即播放音
  • 每次 TDbGrid 的选定位置更改时都会触发什么事件?

    我的项目中有一个 TDbGrid 每次更改所选行时我都试图触发一个事件 行中的任何更改都已经更新了链接到同一数据源的所有数据感知控件 但还需要进行其他更改 我需要一个事件处理程序 我认为 OnColEnter 会起作用 根据帮助文件 它在以
  • 如何在 F# 中实现返回 void 的接口成员

    想象一下 C 中的以下接口 interface IFoo void Bar 我如何在 F 中实现这一点 我在 30 分钟的在线搜索中找到的所有示例都仅显示具有返回类型的示例 我认为这在函数式风格中更常见 但在这种情况下我无法避免 这是我到目
  • Flash AS3 EventDispatcher - 有什么方法可以获取已注册侦听器的列表吗?

    有没有什么方法可以获取注册监听器的列表EventDispatcher 我知道EventDispatcher有hasEventListener方法告诉您是否注册了任何侦听器 但是有没有一种简单的方法来询问EventDispatcher找出听众
  • 覆盖 Windows Phone 7 中的主题

    有没有办法让控件只使用深色或浅色主题 我正在开发一个大部分是深色的应用程序 我们有一些深色的自定义背景 所有文本块都已处理 它们始终是白色的 但是按钮 文本框 复选框 单选按钮 当手机主题设置为浅色时 所有这些都会变成黑色 并且几乎看不见
  • F#:仅对第一个事件执行一次操作,没有可变性/锁定?

    我有这段代码 可以下载文件并在控制台中告诉我该文件有多大 use webClient new WebClient let lockObj new Object let mutable firstProgressEvent true let
  • GXT 3 中树的单击处理程序?

    我一直在翻阅GXT3 s Tree API http dev sencha com deploy gxt 3 0 0 rc2 javadoc gxt com sencha gxt widget core client tree Tree h
  • 黑屏只是闪烁一会儿

    在我的 Windows Phone 8 应用程序中 我有一个搜索页面 其中有一个文本框供用户输入搜索关键字 输入默认SIP键盘的 Enter 键时将调用搜索 搜索结果显示在另一个页面中 为了在导航到结果页面之前隐藏键盘 我使用 this F
  • 使用 ICollectionView 过滤 ObservableCollection

    I have ObservableCollection绑定到dataGrid现在我想过滤我看到需要使用的呈现数据ICollectionView但我不知道如何添加ICollectionView和我的MVVM图案 我的代码简化如下 public
  • 为什么“事件”在 Chrome 中全局可用,而在 Firefox 中则不然?

    在回答另一个问题时 出现了一个与event对象在匿名函数中可用 无需传入 在 Chrome 中 下面的代码工作正常 但 Firefox 会抛出错误 document ready function uspsSideboxTrackingClo

随机推荐

  • Jquery - 通过在字符串中构建 id 的 id 获取元素

    我在使用 jquery 元素时遇到问题 我正在 var 中构造名称 例如 var myId myGotId myId attr title changed myId 返回空 我想通过 id 获取我的元素 但动态构建我的 Id 连接字符串 编
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi
  • 在Python中按属性获取对象列表中的索引

    我有具有属性 id 的对象列表 我想找到具有特定 id 的对象的索引 我写了这样的东西 index 1 for i in range len my list if my list i id specific id index i break
  • PHP递归遍历对象树[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 具有自定义值的 Django 管理外键下拉列表

    我有 3 个 Django 模型 class Test models Model pass class Page models Model test models ForeignKey Test class Question model M
  • 无需重新绘制传单地图即可进行闪亮的 UI 调整

    问题 我正在创建一个闪亮的仪表板来帮助客户探索一些空间数据 我想要实现的 UI 设计允许用户轻松地在两种布局之间切换 Map Only 地图 数据表 我在实现这种设计时遇到了麻烦 因为每次用户在布局之间切换时都会出现两个问题 地图已重新绘制
  • 打字稿 - 字符串'不可分配给类型'FC

    我收到以下错误 Type props PropsWithChildren lt amount number gt gt string is not assignable to type FC lt amount number gt Type
  • 字典和数组作为类变量与实例变量

    这是赚取积分的简单方法 请解释以下内容 class C a b 0 c def init self self x def d self k v self x k v self a k v self b v self c append v d
  • 按字母顺序过滤 Firestore 数据以对 Google Cloud 中的文档读取进行分类/减少

    基于这样的事实Cloud Firestore 不支持全文搜索 https firebase google com docs firestore solutions search到目前为止 我决定问这个question https stack
  • 停止 SAS 执行

    快速提问 是否有一种单行 或相当短的 方法可以从窗口环境中取消进一步 SAS 语句的执行 这些是methods http www2 sas com proceedings sugi31 063 31 pdf我知道 但它们会让人厌烦 尤其是在
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使
  • 耐用功能是否适合大量活动?

    我有一个场景 需要计算 500k 活动 都是小算盘 由于限制 我只能同时计算 30 个 想象一下下面的简单示例 FunctionName Crawl public static async Task
  • 当前的 x86 架构是否支持非临时加载(来自“正常”内存)?

    我知道有关此主题的多个问题 但是 我没有看到任何明确的答案或任何基准测量 因此 我创建了一个处理两个整数数组的简单程序 第一个数组a非常大 64 MB 第二个数组b很小 无法放入 L1 缓存 程序迭代a并将其元素添加到相应的元素中b在模块化
  • 获取 VS Code 扩展中的当前突出显示

    我不是在谈论当前的选择 可以通过以下方式访问它vscode window activeTextEditor selection 当光标位于标识符 变量名称等内部时 它会突出显示 如以下屏幕截图所示 这个突出显示的对象叫什么 我如何访问它 搜
  • 访问 maven-release-plugin 的发布版本

    我在 Jenkins 作业中使用 maven release plugin 并且在执行 shell 脚本时启用了 在 SCM 运行之前运行构建步骤 我想访问此 shell 脚本中的发布版本 但无法访问它 我不确定这个插件中存储发布版本的变量
  • Redux-saga 从操作中获取数据返回patternOrChannel 未定义

    我需要将动态数据从屏幕发送到操作 减速器 并使用该数据从 API 获取数据 但是当我在我的rootSaga我会收到这样的错误 在检查 take patternOrChannel 时未捕获 patternOrChannel 未定义未捕获在 r
  • 如何读取Python字节码?

    我很难理解 Python 的字节码及其dis module import dis def func x 1 dis dis func 上述代码在解释器中输入时会产生以下输出 0 LOAD CONST 1 1 3 STORE FAST 0 x
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li
  • 检查字典键是否有空值

    我有以下字典 dict1 city name yass region zipcode phone address tehsil planet mars 我正在尝试创建一个基于 dict1 的新字典 但是 它不会包含带有空字符串的键 它不会包
  • 将事件绑定到 ItemsControl 中的按钮

    我有一个 Windows Phone 7 应用程序 其中包含一些 xaml 如下所示