将项添加到ItemsControl,而不是来自绑定Itemssource

时间:2011-05-29 21:00:37

标签: c#-4.0

我正在制作一个复选框列表,第一个复选框为“SelectAll”。 SelectAll复选框将选中或取消选中列表中的所有复选框。但是我的检查列表绑定到数据源。现在我想把所有复选框包括selectAll复选框放在同一个包装盒中,以便它们可以在面板的末尾包装在一起。

            <ContentControl Name="FilterContent">
            <WrapPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
                <CheckBox Name="SelectedAll" MinWidth="100" Margin="2"
                            VerticalAlignment="Center" HorizontalAlignment="Left"
                            IsChecked="{Binding IsSelectAll, Mode=TwoWay}"
                            Content="{Binding Path=SelectAllText}">
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="Click">
                            <cmd:EventToCommand Command="{Binding Path=OnClickCommand}"/>
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </CheckBox>
                <ItemsControl ItemsSource="{Binding StandardItems}"
                            Margin="2,5,2,-1"
                            BorderBrush="{x:Null}"
                            Background="Transparent"
                            Grid.ColumnSpan="2"
                            ScrollViewer.VerticalScrollBarVisibility="Hidden"
                            ScrollViewer.HorizontalScrollBarVisibility="Hidden">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <WrapPanel Name="ItemsPanel" Orientation="Horizontal"/>
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <CheckBox Name="ItemCheckBox" 
                                    MinWidth="100" Margin="2"
                                    VerticalAlignment="Center" HorizontalAlignment="Left"
                                    IsChecked="{Binding Path=IsChecked, Mode=TwoWay}"
                                    Content="{Binding Path=Label}"/>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </WrapPanel>
        </ContentControl>

这段代码不允许我这样做,结果UI只将项目控件中的项目包含在第二行,但不考虑同一个wrappanel中的所有复选框。我需要帮助将“SelectAll”复选框添加到itemscontrol使用的wrappanel。

谢谢!

1 个答案:

答案 0 :(得分:0)

加载控件时,我会在StandardItems列表中添加一个空的StandardItem,这意味着“全选”。当我处理复选框点击事件时,我检查该项目是否为空项目,并将其用作“全选”的调用