Xaml文件:

<ListBox Name="lbTasteSet" ScrollViewer.HorizontalScrollBarVisibility="Disabled"
  ItemsSource="{Binding TasteSet}" Style="{StaticResource MultipleToggleButtonList}"
  SelectionMode="Multiple">
  <i:Interaction.Triggers>
    <i:EventTrigger EventName="SelectionChanged">
    <i:InvokeCommandAction Command="{Binding GetTasteCommand}"
               CommandParameter="{Binding ElementName=lbTasteSet}"></i:InvokeCommandAction>
    </i:EventTrigger>
  </i:Interaction.Triggers>
  <ListBox.ItemsPanel>
    <ItemsPanelTemplate>
      <WrapPanel IsItemsHost="True" ItemHeight="30" ItemWidth="60"></WrapPanel>
    </ItemsPanelTemplate>
  </ListBox.ItemsPanel>
</ListBox>

Xaml中用到的Style:因为ToggleButton相当于ListBoxItem的Content,这时要使togglebutton的IsSelected属性与ListBox的SelectedItem的IsSelect属性关联则需要在Style中设置下划线所示Setter

<Style TargetType="ListBox" x:Key="MultipleToggleButtonList">
  <Setter Property="ItemContainerStyle">
  <Setter.Value>
    <Style TargetType="ListBoxItem">
    <Setter Property="IsSelected" Value="{Binding Path=IsSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></Setter>

    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate>
          <Border Background="Transparent" Margin="{TemplateBinding Padding}">
          <telerik:RadToggleButton Content="{Binding Path=Taste.Name}"
            IsChecked="{Binding Path=IsSelected,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}">                       </telerik:RadToggleButton>
          </Border>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
    </Style>
  </Setter.Value>
  </Setter>
</Style>

ViewModel:用到了(lanmuda)表达式

/// <summary>
/// 获取选择的口味
/// </summary>
public void ExecuteGetTaste(ListBox lb)
{
  //TasteItemViewModel model = lb.SelectedItem as TasteItemViewModel;
  List<Taste> selectedTastes= this.TasteSet.Where(i => i.IsSelected == true).Select(i => i.Taste).ToList();
  selectedTastes.Distinct();
  string strTaste = "";
  foreach (var item in selectedTastes)
  {
    strTaste += "["+item.Name+"]";
  }
  this.DishTaste = strTaste;
}

转载于:https://www.cnblogs.com/gnsds/p/3671955.html

在ListBox中添加ToggleButton(有IsChecked属性)相关推荐

  1. 如何防止在ListBox中添加很多数据出现不停的刷新?

    如何防止在ListBox中添加很多数据出现不停的刷新? [问题提出]     在listbox添加很多数据的时候,由于控件不停的刷新,导致出现闪烁,如何解决? [解决方法]     再添加数据以前,禁 ...

  2. 【CSS】CSS在标签中添加多个class属性

    CSS在标签中添加多个class属性 <!DOCTYPE html> <html><head><meta charset="utf-8"& ...

  3. 如何防止在listbox中添加很多数据出现不停的刷新

    [问题提出]     在listbox添加很多数据的时候,由于控件不停的刷新,导致出现闪烁,如何解决?   [解决方法]     再添加数据以前,禁止控件刷新,数据添加完毕以后,再刷新一次.   [程 ...

  4. Spring Boot和多模块项目–添加模块特定的属性文件

    你好! 在本文中,我将向您展示几种如何在Spring Boot项目中添加模块特定的属性文件的方法. 它将介绍使属性文件可识别配置文件的手动方法以及可识别配置文件的半自动方法. 我的Github帐户上发 ...

  5. target html语言,html中a标签的target属性

    [修复Win8.1 BUG] 解决Win8.1英文字体发虚不渲染问题 Win8.1更新了宋体字体,中文字体显示漂亮了,但英文字体发虚不渲染,尤其是小号的英文和数字字体,看下图. 1.下载Win8的宋体 ...

  6. VC实现在ListBox中选择背景位图

    VC实现在ListBox中选择背景位图 本文介绍如何在ListBox中添加更换背景位图,并提供源代码供参考.本文源代码运行效果图如下:   一.基本原理: 构造一个LISTBOX的子类CMYLISTB ...

  7. 在网络中添加SE通道注意力模块

    第一步:首先在网络构造的py中添加SELayer这个类 class SELayer(nn.Module):def __init__(self, channel, reduction=16):super ...

  8. 【Infragistics教程】在javascript类中添加静态成员属性

    2019独角兽企业重金招聘Python工程师标准>>> [下载Infragistics Ultimate最新版本] 在一个javascript类中创建一个属性的需求,它需要被所有对象 ...

  9. 开发手记之-在Winform中为ListBox的添加选项值,并增加双击事件

    一直做WebForm, 对于Winform也只仅限于偶尔写一些小程序. 最近因为写了一采集网站数据的小程序,里边要对批量采集到的html页面进行编辑 里边用到了ListBox,显示的时候发现显示文件路 ...

最新文章

  1. mysql 5.6.29编译安装_MySQL-5.6.29源码编译安装记录
  2. TIBCO Rendezvous — 技术介绍
  3. Re:从零开始的Vue项目搭建
  4. 7天拿到阿里安卓岗位offer,附高频面试题合集
  5. 多标签文本分类数据集_标签感知的文档表示用于多标签文本分类(EMNLP 2019)...
  6. 机器学习算法概述:随机森林逻辑回归
  7. Android国际化-补充
  8. CSS基础——浮动(float)【学习笔记】
  9. 浅谈对软件工程的认识与理解
  10. C语言游戏开发——打飞机游戏1.0
  11. 阿里云短信验证码+Java开发
  12. 中国土地市场销售规模状况与投资战略研究报告2022版
  13. 4.名词性从句的起源与本质
  14. matlab方波响应,对周期方波信号进行滤波matlab的实现
  15. Halcon显示正常比列长宽比的方法
  16. 秀米 ueditor 远程抓图到本地 问题结合
  17. SpringBoot 打成的 jar 包和普通的 jar 包有什么区别
  18. 企业承担社会责任的必要性
  19. 解决对路径bin\roslyn..的访问被拒绝
  20. 一个例子搞懂编码问题

热门文章

  1. SpringBoot是如何解析HTTP参数的?
  2. 给你一份长长长的 Spring Boot 知识清单(上)
  3. 详解Node.js包的工程目录与NPM包管理器的使用_node.js
  4. Spring Security 4 使用@PreAuthorize,@PostAuthorize, @Secured, EL实现方法安全
  5. 多个线程同时运行,顺序打印问题
  6. Java Stringbuilder简单介绍
  7. Android --- Binary XML file line2 Binary XML file line 2 Error inflating class unknown
  8. list排序方法python_python list 排序的两种方法及实例讲解
  9. mysql聚集索引可以多列吗_MySQL使用单列索引和多列索引
  10. 数据港:攻破OPEX+SLA难题,实现全生命周期效能管理