我在telerik组合控件中有复选框。如果用户单击复选框列表中的“全部”选项,则我需要选中所有复选框。 复选框值。 我的示例代码如下。
<telerik:RadComboBox Name="rcbDays" Grid.Row="1" Grid.Column="1" Width="200" HorizontalAlignment="Left" ItemsSource="{Binding MonthDaysList}" VerticalAlignment="Center" >
<telerik:RadComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox Name="chkDays" Content="{Binding DaysText}"
Tag="{Binding DaysValue}" Checked="chkDays_Checked" />
</StackPanel>
</DataTemplate>
</telerik:RadComboBox.ItemTemplate>
</telerik:RadComboBox>
private void chkWeeks_Checked(object sender, RoutedEventArgs e)
{
//Here I want code for selecting all checkboxes.
}
答案 0 :(得分:0)
您绑定ComboBox
的项目应该具有IsSelected
之类的属性,然后您应该将数据模板IsChecked
的{{1}}绑定到该CheckBox
。然后你只需要迭代源集合并在所有项目上设置IsSelected=true
。
e.g。
public class MyClass : MyBaseClass // Whatever you may have called it,
{
public bool IsSelected { ... }
public string DaysText { ... }
//...
}
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsSelected}" Content="{Binding DaysText}" Tag="{Binding DaysValue}" />
</StackPanel>
</DataTemplate>
//In the handler that is supposed to select all
foreach (var item in MonthDaysList) item.IsSelected = true;
当然,该物业需要change notifications。
(还有关于可用性的说明:如果您需要多个项目选择使用ComboBoxes
<,我不会CheckBoxes
应该包含ListBox
/ p>
答案 1 :(得分:0)
如H.B所述,您需要再选择一个属性。 将IsChecked =“{Binding IsSelected}”添加到xaml文件中的CheckBox标记。在相应的类中创建一个属性,即public bool isSeleted .......
当你进入事件chkWeeks_Checked()在这个函数中获取ComboBox项目源的引用,如objList =(TypeCastYourClassType)YourComboBox.ItemSource; ...现在objList包含所有复选框项。迭代objList集合并为每个单独的项获取isSeleted属性并完成.... 在你的情况下
MonthDayList = (TypeCastYourClassType)rcbDays.ItemSource;
for(int i=0;i<MonthDayList.Count;i++)
{
MonthDayList[i].isSelected = true;
}
答案 2 :(得分:0)
以下是允许在telerik组合框中选择多个值的一些很好的讨论。 它使用组合框中的复选框
http://codedotnets.blogspot.in/2012/02/checkboxes-in-comboxes-to-allow.html
谢谢:)