原文:WPF ListBoxItem模板中添加CheckBox选中问题

是这样的,需要一个ListBox来展示照片,并添加一个选中的CheckBox.这就需要对ListBox的ItemTemplate的DataTemplate进行定制.添加一个Image和一个CheckBox.

大概是这样子的.

  1. <Setter Property="ItemTemplate">
  2. <Setter.Value>
  3. <DataTemplate>
  4. <Grid Width="250">
  5. <Grid.RowDefinitions>
  6. <RowDefinition Height="200"></RowDefinition>
  7. <RowDefinition Height="20"></RowDefinition>
  8. </Grid.RowDefinitions>
  9. <Image Grid.Row="0" Source="{Binding Photo}" Width="220"/>
  10. <CheckBox Grid.Row="1" Content="命中" IsChecked="{Binding IsTarget}"></CheckBox>
  11. </Grid>
  12. </DataTemplate>
  13. </Setter.Value>
  14. </Setter>

问题来了,当我选中CheckBox的时候,我希望ListBoxItem跳转到当前CheckBox所在的ListBoxItem上.如何实现?

主要有下面两种方法 :

1.

在Xaml中添加:

  1. <ListBox.ItemContainerStyle>
  2. <Style TargetType="{x:Type ListBoxItem}">
  3. <EventSetter Event="PreviewGotKeyboardFocus" Handler="SelectCurrentItem"/>
  4. </Style>
  5. </ListBox.ItemContainerStyle>

在.cs文件中添加

  1. protected void SelectCurrentItem(object sender, KeyboardFocusChangedEventArgs e)
  2. {
  3. ListBoxItem item = (ListBoxItem)sender;
  4. item.IsSelected = true;
  5. }

2.

在Xaml中添加:

  1. <Style TargetType="{x:Type ListBoxItem}">
  2. <Style.Triggers>
  3. <Trigger Property="IsKeyboardFocusWithin" Value="true">
  4. <Setter Property="IsSelected" Value="true" />
  5. </Trigger>
  6. </Style.Triggers>
  7. </Style>

问题解决.

解释:

对于方法1:

UIElement.PreviewGotKeyboardFocus 事件

在此元素聚焦于键盘时发生。由于此事件使用隧道路由,因此具有焦点的元素可能是子元素,而不是实际附加事件处理程序的元素。 请检查事件数据中的 Source 以确定实际具有焦点的元素。

http://msdn.microsoft.com/zh-cn/library/system.windows.uielement.previewgotkeyboardfocus.aspx

对于方法2:

UIElement.IsKeyboardFocusWithin 属性

获取一个值,该值指示键盘焦点是否位于元素或其可视树子元素内的任意位置。这是一个依赖项属性。

http://msdn.microsoft.com/zh-cn/library/system.windows.uielement.iskeyboardfocuswithin(v=VS.90).aspx?ppud=4

WPF ListBoxItem模板中添加CheckBox选中问题的更多相关文章

  1. WPF: 在ListView中添加Checkbox列表

    描述:ListView是WPF中动态绑定工具的数据容器,本文实现了一个在ListView中显示的供用户选择的列表项目,并且控制列表中选择的项目数量,即实现单选. XAML中创建ListView,代码如 ...

  2. DataGridView 中添加CheckBox和常用处理方式 .

    DataGridView 中添加CheckBox和常用处理方式 文章1 转载:http://blog.csdn.net/pinkey1987/article/details/5267934 DataG ...

  3. DataGridView中添加CheckBox列用于选择行

    DataGridView中添加CheckBox列用于选择行 1,编辑DataGridView,添加一列 CheckBox ,Name 赋值为 "select",如下图: 2,取消 ...

  4. 往另外1个ListView中添加当前选中的项目

      //往另外1个ListView中添加当前选中的项目   function AddSelItems(listview1:TListView;ListView2:TListView):Boolean; ...

  5. Jquery动态在td中添加checkbox

    如图:想要在这个id为headId的<td>中,用jquery动态添加checkbox 代码如下 : data是我用ajax 从后台获取的数据,里面含有若干个user类,我想把所有的人名字 ...

  6. JQuery获取指定元素中的checkbox选中状态的一些属性

    项目中用户上传病例数据,每一次上传自动生成一个病例文件夹,数据保存到后台,前端显示文件夹,现在的需求是勾选想要删除的文件夹的chenckbox,点击删除后,数据库和前端都相应的更新. 如果是静态页面, ...

  7. 如何在TFS的过程模板中添加报表

    在新建团队项目的过程中,TFS的"新建团队项目向导"会根据用户选择的过程模板类型(CMMI, Scrum,Agile等)自动为团队项目创建一个SSRS(SQL Server Rep ...

  8. js获取到的页面中的checkbox选中的项

    需求描述:列表第一列是checkbox name和value都是id 想通过复选框的勾选状态来获取id,在js中获取 js代码: var checkId=$("input[name='che ...

  9. 在django模板中添加jquery

    路径 /project_name /app_name /templates /index.html /project_name setting.py /static /js jquery.js 导入方 ...

随机推荐

  1. spring里头各种获取ApplicationContext的方法

    为啥写这个文章呢?spring各个版本不同,以及和系统框架套在一起不同,导致获取的方式不同,网络上各种版本,太乱了,写获取方式的人都不写这个获取方式是在本地还是在WEB,在那种应用服务器下,在spri ...

  2. todo bitnami

    https://bitnami.com/stack/dokuwiki https://bitnami.com/stack/jenkins/installer

  3. HelloWorld RabbitMQ

    RabbitMQ入门-从HelloWorld开始 从读者的反馈谈RabbitMQ 昨天发完<RabbitMQ入门-初识RabbitMQ>,我陆陆续续收到一些反馈.鉴于部分读者希望结合实例来 ...

  4. c# 安全队列

    using System;using System.Collections.Concurrent;using System.Collections.Generic;using System.Linq; ...

  5. skip-slave-start的重要性

    原来做复制的主机因为数据丢失需要重新创建复制环境,机器上已经有了主库数天前的备份,于是删除数据目录直接把备份放上去,结果发现复制没有抱错,show slave status一切正常,select co ...

  6. [TypeScript] Using ES6 and ESNext with TypeScript

    TypeScript is very particular about what is and isn't allowed in a TS file to protect you from commo ...

  7. 【机器学习实战】第9章 树回归(Tree Regression)

    第9章 树回归 <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/ ...

  8. 进入Erlang的世界

    http://erlang.group.iteye.com/group/wiki/1407-to-enter-the-world-of-erlang 进入Erlang的世界 作为程序员,我们曾经闻听很 ...

  9. 【poj2406】next数组求循环节

    传送门 题目分析 本题主要考察kmp中next数组在求循环时的运用: 字符串是循环的: len % (len - next[len]) == 0 字符串循环次数: len / (len - next[ ...

  10. Linux常用 bash

    学会Linux常用 bash命令 目录 基本操作1.1. 文件操作1.2. 文本操作1.3. 目录操作1.4. SSH, 系统信息 & 网络操作 基本 Shell 编程2.1. 变量2.2.  ...