【问题标题】:How to check or uncheck checkboxes inside of a List Box WPF如何选中或取消选中列表框 WPF 中的复选框
【发布时间】:2014-08-01 15:16:59
【问题描述】:

我有一个组合框,它的数据源来自我的数据库中的一个表。因此,我的组合中的每个项目都是表中的一个对象。这个对象有一个属性,它对应于一个充满“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”选中复选框或if is "0" 取消勾选复选框,以此类推... ListBox中的所有复选框,如何做到这一点?

【问题讨论】:

  • 几乎一切皆有可能......但您尝试过什么,遇到过什么问题?
  • WPF checkbox binding的可能重复
  • 我有一个页面,我希望允许用户根据管理员在此 ListBox 中选择的值从他想要隐藏或显示在其他用户中的列表框中配置这些值跨度>
  • @paqogomez 这似乎很有用

标签: c# wpf checkbox


【解决方案1】:

我用自己的具有 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();
    }
}

试试这个。希望对您有所帮助。

【讨论】:

    【解决方案2】:

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

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

    如果您之前没有制作过价值转换器,这里有一个很好的制作教程:http://wpftutorial.net/ValueConverters.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      • 2016-03-21
      • 2014-05-04
      相关资源
      最近更新 更多