在ListView UWP

时间:2016-04-04 09:44:08

标签: c# listview checkbox win-universal-app windows-10

我有一个ListView,它包含22个CheckBoxes。我应该检查所有这些,如果选中checkBox则返回1,否则返回0。

                 < ListView x: Name = "CheckBoxList" >  
                   < CheckBox x: Name = "nr1" />
                    ...    
                   < CheckBox x: Name = "nr22" />
                  </ListView>

在这里我发送1或0

            dynamic sendMessage = MyApi.Api.sendMessage( //for example 1, 0, 1, 1, 0, 0 etc.//);

如何自动制作?因为我所知道的是如何手动检查它(如果 - 除了每个控件),但这不是一个好的解决方案。

1 个答案:

答案 0 :(得分:0)

而不是1,0可以返回true或false。如果是这样,您可以将属性绑定到CheckBox的IsChecked属性。 如果你不能返回true或false,你必须使用值转换器

<ListView ItemsSource="{Binding values}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <CheckBox IsChecked="{Binding value}"/>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

如果你不能返回真或假

 <Page.Resources>
        <local:BooleanToIntegerConverter x:Key="BooleanToIntegerConverter"/>
    </Page.Resources>

<ListView ItemsSource="{Binding values}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <CheckBox IsChecked="{Binding value,Converter={StaticResource BooleanToIntegerConverter}}"/>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

<强>转换器

public class BooleanToIntegerConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, string language)
        {
            if ((bool)value)
                return 1;
            else
                return 0;
        }
        public object ConvertBack(object value, Type targetType, object parameter, string language)
        { throw new NotImplementedException(); }
    }