如何将属性绑定到wpf中由组合框生成的复选框

本文关键字:组合 复选框 属性 绑定 wpf | 更新日期: 2023-09-27 18:06:12

我有一个带复选框的组合框,它的xaml看起来像这样:

<ComboBox Height="28" HorizontalAlignment="Left" Margin="106,7,0,0" Name="comboBox1" VerticalAlignment="Top" Width="174" ItemsSource="{Binding Names}">
   <ComboBox.ItemTemplate>
      <DataTemplate>
         <CheckBox Name="ckabc" Content="{Binding}" CommandParameter="{Binding}" Command="{Binding Path=SetSelectAllCommand}"/>
      </DataTemplate>
   </ComboBox.ItemTemplate>
</ComboBox>

和视图模型代码如下:

public List<string> Names
{
    get { return names; }
    set
    {
        names = value;
        this.OnPropertyChanged(new PropertyChangedEventArgs("Names"));
    }
}

我需要这个值在mainform上,所以我在构造函数中做了这部分:

Names = new List<string> { "Not Connected", "Quality", "Light", 
               "Connected", " Sensor", "Detected", "Unusable", "Change" };
this.OnPropertyChanged(new PropertyChangedEventArgs("Names"));

所以现在组合框将与复选框一起出现。我需要将复选框与调用API

的属性绑定

请告诉我该怎么做?

。组合框的所有文本都是属性

如何将属性绑定到wpf中由组合框生成的复选框

无论为什么要这样做,确实有一种技术可以做到。通过利用ElementName属性,您可以从模板"跳转"到根数据上下文。

<Window Name="Root">   
    <ComboBox Height="28" HorizontalAlignment="Left" Margin="106,7,0,0" Name="comboBox1" VerticalAlignment="Top" Width="174" ItemsSource="{Binding Names}">
       <ComboBox.ItemTemplate>
          <DataTemplate>
             <CheckBox Name="ckabc" Content="{Binding ElementName=Root, Path=DataContext.MySpecialProperty}"/>
          </DataTemplate>
       </ComboBox.ItemTemplate>
    </ComboBox>   
</Window>

话虽如此,ComboBox中的CheckBox听起来确实很奇怪,您可能需要重新考虑