如何在WPF应用程序中加载的窗口上检查具有复选框的互斥chechkbox

时间:2014-03-09 06:06:09

标签: c# wpf

我有三个复选框,即文件提交,文件提取和其他。我将这三个复选框互相排斥,如下面

<Grid Height="303" Width="500">
        <ListBox Name="ListBox1" Margin="49,67,86,164">
            <ListBox.Resources>
                <Style TargetType="{x:Type ListBoxItem}">
                    <Style.Resources>
                        <SolidColorBrush
                       x:Key="{x:Static SystemColors.HighlightBrushKey}"
                       Color="White"/>
                    </Style.Resources>
                </Style>
            </ListBox.Resources>
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Background="White" IsItemsHost="True"
                            Orientation="Horizontal"/>
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>

            <ListBox.ItemTemplate>
                <DataTemplate>
                    <CheckBox  FontWeight="Bold" FontSize="13" IsThreeState="True"   IsChecked="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ListBoxItem}}}"  Content="{Binding}" BorderThickness="1" AllowDrop="False" Focusable="True"  Background="White" />
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>

列表框在按照

加载的窗口上绑定
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    List<string> lst = new List<string>();
    lst.Add("Documnet Pickup");
    lst.Add("Document Submission");
    lst.Add("Others");
    ListBox1.ItemsSource = lst;
}

如何在加载的窗口中选中一个复选框。这是最好的方法吗?

2 个答案:

答案 0 :(得分:0)

尝试将最后一行添加到您的函数中。它会检查第一个复选框。

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    List<string> lst = new List<string>();
    lst.Add("Documnet Pickup");
    lst.Add("Document Submission");
    lst.Add("Others");
    ListBox1.ItemsSource = lst;
    ListBox1.Items[0].Selected = true;
}

答案 1 :(得分:0)

由于您在此处将复选框IsChecked属性绑定到列表框项IsSelected属性:

IsChecked="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ListBoxItem}}}"

您可以简单地将列表框选择的索引设置为项目的索引,例如,第一项:

List<string> lst = new List<string>();
lst.Add("Documnet Pickup");
lst.Add("Document Submission");
lst.Add("Others");
ListBox1.ItemsSource = lst;
ListBox1.SelectedIndex = 0;

然后相应的项目将自动选中复选框。