美文网首页
WPF 中的CheckBox

WPF 中的CheckBox

作者: Ritchie_Li | 来源:发表于2022-06-15 20:48 被阅读0次

最近需要使用该控件做一个选择,顺便温习一下该控件的基本使用方法。

示例1:

<StackPanel Margin="10">

            <Label FontWeight="Bold">请选择:</Label>

            <CheckBox>Python</CheckBox>

            <CheckBox IsChecked="True">Advance C#</CheckBox>

            <CheckBox>Prime C++</CheckBox>

        </StackPanel>

IsChecked属性为True时,被选中。

示例2:

CheckBox 继承自内容控件,意味可以使用自定义显示的内容。

<StackPanel Grid.Column="1" Margin="10">

            <Label FontWeight="Bold">请选择:</Label>

            <CheckBox>

                <TextBlock>

<Run Foreground="Green" FontWeight="Bold">Python</Run>

                    Crash Course

                </TextBlock>

            </CheckBox>

            <CheckBox IsChecked="True">

                <WrapPanel>

                    <TextBlock>

Help for Programmers <Run FontWeight="Bold"> C# 8.0 Pocket Reference</Run>

                    </TextBlock>

                    <Image Source="Images/question.png" Width="16" Height="16" Margin="5,0" />

                </WrapPanel>

            </CheckBox>

            <CheckBox>

                <TextBlock>

                    Beginning Through

    <Run Foreground="Blue" TextDecorations="Underline" FontWeight="Bold">C++ </Run>

                    Game Programming

                </TextBlock>

            </CheckBox>

        </StackPanel>

在三个复选框上,我对文本做了不同的处理,在中间的一个加入了一个 Image 控件。通过将控件指定为内容,而不仅仅是文本,我们可以更好地控制外观,无论您单击内容的哪个部分,它都会激活 CheckBox 并打开或关闭它.

示例3:

IsThreeState 属性。CheckBox 通常对应一个布尔值,这意味着它只有两种状态:真或假(开或关)。但是,由于布尔数据类型可能为空,有效地允许第三个选项(真、假或空),CheckBox 控件也可以支持这种情况。通过将 IsThreeState 属性设置为 true,CheckBox 将获得称为“不确定状态”的第三种状态。

<StackPanel Margin="10" Grid.Row="1" Grid.Column="0">

            <Label FontWeight="Bold">请选择:</Label>

            <StackPanel Margin="10,5">

                <CheckBox IsThreeState="True" Name="cbAllFeatures" Checked="cbAllFeatures_Checked" Unchecked="cbAllFeatures_Unchecked">Enable all</CheckBox>

                <StackPanel Margin="20,5">

                    <CheckBox Name="cbFeatureAbc" Checked="cbFeature_CheckedChanged" Unchecked="cbFeature_CheckedChanged">Python</CheckBox>

                    <CheckBox Name="cbFeatureXyz" IsChecked="True" Checked="cbFeature_CheckedChanged" Unchecked="cbFeature_CheckedChanged">Advance C#</CheckBox>

                    <CheckBox Name="cbFeatureWww" Checked="cbFeature_CheckedChanged" Unchecked="cbFeature_CheckedChanged">Prime C++</CheckBox>

                </StackPanel>

            </StackPanel>

        </StackPanel>

private void cbFeature_CheckedChanged(object sender, RoutedEventArgs e)

        {

            cbAllFeatures.IsChecked = null;

            if ((cbFeatureAbc.IsChecked == true) && (cbFeatureXyz.IsChecked == true) && (cbFeatureWww.IsChecked == true))

                cbAllFeatures.IsChecked = true;

            if ((cbFeatureAbc.IsChecked == false) && (cbFeatureXyz.IsChecked == false) && (cbFeatureWww.IsChecked == false))

                cbAllFeatures.IsChecked = false;

        }

private void cbAllFeatures_Checked(object sender, RoutedEventArgs e)

        {

            bool newVal = (cbAllFeatures.IsChecked == true);

            cbFeatureAbc.IsChecked = newVal;

            cbFeatureXyz.IsChecked = newVal;

            cbFeatureWww.IsChecked = newVal;

        }

示例4:

动态添加CheckBox

<StackPanel Grid.Row="1" Grid.Column="1" Margin="5" x:Name="sp4">

            <CheckBox Name="McCheckBox1"  Content="Check Me" 

                IsChecked="True" IsThreeState="True" >

            </CheckBox>

            <CheckBox Name="McCheckBox" 

              Content="Check Me" 

              IsChecked="True" IsThreeState="True" 

              Checked="McCheckBox_Checked"  Unchecked="McCheckBox_Unchecked">

            </CheckBox>

            <Button  x:Name="btnDynamicAdd" Click="btnDynamicAdd_Click" Margin="5">Dynamic Add</Button>

        </StackPanel>

后台代码

private void McCheckBox_Checked(object sender, RoutedEventArgs e)

        {

            McCheckBox.Content = "Checked";

        }

        private void McCheckBox_Unchecked(object sender, RoutedEventArgs e)

        {

            McCheckBox.Content = "Unchecked";

        }

        private void CreateDynamicCheckBox()

        {

            CheckBox chb = new CheckBox();

            chb.Content = "Click me";

            chb.IsChecked = true;

            chb.Foreground = new SolidColorBrush(Colors.Orange);

            chb.IsChecked = true;

            sp4.Children.Add(chb);

        }

        private void btnDynamicAdd_Click(object sender, RoutedEventArgs e)

        {

            CreateDynamicCheckBox();

        }

相关文章

网友评论

      本文标题:WPF 中的CheckBox

      本文链接:https://www.haomeiwen.com/subject/kdaxvrtx.html