如何选中或取消选中列表框WPF中的复选框

时间:2014-06-11 14:07:23

标签: c# wpf checkbox

我有一个组合框,其数据源来自我的DataBase中的表。因此,我的组合中的每个项目都是表格中的对象。该Object具有一个属性,该属性对应于一个充满“1”或“0”的字符串。另一方面,我有一个带有此模板的ListBox内的复选框列表:

   <ListBox Height="150" MinHeight="100" HorizontalAlignment="Center" Name="lstEstudios" VerticalAlignment="Top" Width="200" 
                                 ItemsSource="{Binding}" SelectionMode="Multiple" Margin="0,20,0,0">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <CheckBox Name="chkEstudios" Width="Auto"  Content="{Binding Path=Nom_estudio}" 
                                          Checked="chkEstudios_Checked" Unchecked="chkEstudios_Unchecked"/>
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

我不知道是否可能,但我想要做的是,对于属性集中的每个“1”或“0”,选中或取消选中复选框,具体取决于是否有“1”选中复选框或如果为“0”取消选中该复选框,依此类推...使用ListBox中的所有复选框,该怎么做?

2 个答案:

答案 0 :(得分:3)

我用我自己的具有CustomTask类的示例尝试了同样的事情。

       <ListBox ItemsSource="{Binding CustomTasks}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <CheckBox IsChecked="{Binding TaskStatus, Converter={x:Static testApp:StatusToBooleanConverter.Instance}}" Content="{Binding TaskStatus}"/>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

其中TaskStatus是两个值中的boolean,即CompletedPending

这是转换器的代码

 public class StatusToBooleanConverter : IValueConverter
{
    public static StatusToBooleanConverter Instance = new StatusToBooleanConverter();
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is Status)
        {
            switch ((Status)value)
            {
                case Status.Completed:
                    return true;
                case Status.Pending: 
                    return false;
            }
            return null;
        }
        return null;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

试试吧。希望有所帮助。

答案 1 :(得分:0)

这是使用转换器的好地方。如果你有一个包含1和0的属性,并且想要将这些属性转换为true / false,那么请尝试使用转换器来完成工作。转换器背后的基本思想是获取输入值(来自绑定属性),顾名思义,将其转换为不同的值。你可以根据自己的意愿使它们变得简单或复杂,然后转向&#34; 1&#34;变为真和&#34; 0&#34;变成假应该很快。

您将复选框的IsChecked属性绑定到1和0的源,并且在绑定中也使用转换器。

如果您还没有制作过值转换器,请在此处制作一个很好的教程:http://wpftutorial.net/ValueConverters.html