复选框用于组合框时,复选框IsChecked属性

时间:2014-04-23 07:50:49

标签: wpf mvvm

我已将IsChecked属性绑定到GridMetricChecked属性,但问题是当我通过ViewModel将IsChecked设置为true时,则会选中复选框中的所有项目。我只想检查或取消选中一个项目。我不知道怎么做。

<telerik:RadComboBox Grid.Row="0" Grid.Column="4" HorizontalAlignment="Right"
    VerticalContentAlignment="Center" Height="25" Margin="0,13,0,12"  Width="100" 
    ItemsSource= "{Binding PieChartScriptSource, Mode=TwoWay}"  
    HorizontalContentAlignment="Stretch" IsTextSearchEnabled="True"
    IsEditable="True" ToolTip="{localization:Translate FiledToolTip}" Grid.RowSpan="2">

    <telerik:RadComboBox.ItemTemplate  >
        <DataTemplate>
        <CheckBox Content="{Binding }" Checked="CheckBox_Checked"
          IsChecked="{Binding DataContext.GridMetricChecked, Mode=TwoWay, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type telerik:RadWindow}}}" />
        </DataTemplate>
    </telerik:RadComboBox.ItemTemplate>

</telerik:RadComboBox>

1 个答案:

答案 0 :(得分:0)

您已将CheckBox的IsChecked属性绑定到视图模型中包含的属性。因此,所有复选框都指向相同的属性,因此指向您获得的行为。相反,您应该在模型中创建一个属性,即ItemSource中的项类型(在您的情况下为PieChartScriptSource)。例如,如果PieChartScriptSource集合中的每个项目都是类ABC,那么这意味着每个ComboBox项目的DataContext将是类ABC类,因此您必须在类ABC中创建一个布尔属性,表示复选框的ISChecked状态。 希望这会有所帮助。