wpf 以复选框作为ItemTemplate循环访问组合框

inn6fuwd  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(146)

如何遍历ComboBox,该ComboBox的物料模板包含一个CheckBox,如下所示:

<ComboBox Name="cboFruitsName" ItemsSource="{Binding StringFruitsType}" Height="25" Width="300"  HorizontalAlignment="Center" VerticalAlignment="Center" Focusable="False"
          IsTextSearchEnabled="True" StaysOpenOnEdit="True" IsReadOnly="True" IsEditable="True" Text="-- Select Alert Name --">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <CheckBox x:Name="chkBox" Width="Auto" Height="23" Content="{Binding}" Checked="chkBox_Checked" Unchecked="chkBox_Unchecked" />
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

在视图模型中,我定义了StringFruitsType属性,如下所示:

public List<string> StringFruitsType
{ 
    get
    {
        return LoadStrings();
    }            
}

 private List<string> LoadStrings()
{
    return new List<string> { "Apple",
                              "Orange",
                              "Grapes",
                              "Mango" };
}

我们如何迭代ComboBox?我正在寻找如下所示的东西:

foreach(var item in cboFruitsName.Items)
{
   Checkbox cb = (CheckBox)item;
   if(cb != null)
   {
      if(cb.Content.ToString() == SelectedFruitName)
      {
        cb.IsChecked = true;
      }
   }
}
nsc4cvqm

nsc4cvqm1#

如果我没理解错的话,您的目标是检查ComboBox的当前选定项,但仅用于显示目的。将IsChecked绑定到ComboBoxItem父容器的IsSelected属性。

<ComboBox.ItemTemplate>
   <DataTemplate>
      <CheckBox x:Name="chkBox" Width="Auto" Height="23" Content="{Binding}"
                IsChecked="{Binding IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ComboBoxItem}}}"/>
   </DataTemplate>
</ComboBox.ItemTemplate>

相关问题