zoukankan      html  css  js  c++  java
  • 在ListBox中添加ToggleButton(有IsChecked属性)

    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;
    }

  • 相关阅读:
    CEF解决加载慢问题
    CEF之CefSettings设置locale
    Win32程序支持命令行参数的做法(转载)
    VC++实现程序重启的方法(转载)
    CEF之CefSettings设置日志等级
    libcurl开源库在Win32程序中使用下载文件显示进度条实例
    libcurl开源库在Win7 + VS2012环境下编译、配置详解 以及下载文件并显示下载进度 demo(转载)
    使用ShellExecute打开目标文件所在文件夹并选中目标文件
    linux下gimp的使用
    linux下的chm阅读器?
  • 原文地址:https://www.cnblogs.com/gnsds/p/3671955.html
Copyright © 2011-2022 走看看