2

グループボックスに問題があります。グループボックスにはグリッドがあり、その中に約20個のチェックボックスがあります。問題は、上記のすべてのチェックボックスの値を別のグループボックスに表示する必要があることです。

私はWPF C#で作業しています。

上記に対してトリガーするイベントはどれですか?

チェックされたチェックボックスがチェックされていない場合、2番目のグループボックスに表示されている値は消えます。

4

1 に答える 1

1

Wpf には、Checked EventUnChecked Event、およびIndeterminate Eventがあり、それらはすべて Generic を使用するRoutedEventHandlerため、それらを Common Event Handler に接続し、Senders Name またはTagProperty の Unique Indentifier を確認し、それを使用して変更することができます。その他の値GroupBox

Xaml

<CheckBox Content="CheckBox" Checked="checkedChanged" Unchecked="checkedChanged" Indeterminate="checkedChanged" Height="16" HorizontalAlignment="Left" Margin="10,10,0,0" Name="checkBox1" VerticalAlignment="Top" Tag="1" />
<CheckBox Content="CheckBox" Checked="checkedChanged" Unchecked="checkedChanged" Indeterminate="checkedChanged" Height="16" HorizontalAlignment="Left" Margin="10,36,0,0" Name="checkBox2" VerticalAlignment="Top" Tag="2" />

Xaml.cs

private void checkedChanged(object sender, RoutedEventArgs e)
{
    CheckBox cb = (CheckBox)sender;
    int index;
    if (int.TryParse(cb.Tag.ToString(), out index))
    {
        if (cb.IsChecked == true)
        {
            switch (index)
            {
                case 1:
                    break;

                case 2:
                    break;

                default:
                    break;
            }
        }
        else if (cb.IsChecked == false)
        {
            switch (index)
            {
                case 1:
                    break;

                case 2:
                    break;

                default:
                    break;
            }
        }
        else
        {
            switch (index)
            {
                case 1:
                    break;

                case 2:
                    break;

                default:
                    break;
            }
        }
    }
}

コメントで言及した例:

Xaml

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <GroupBox Grid.Column="0" BorderBrush="Black" BorderThickness="2">
            <Grid >
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="*" />
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
                <CheckBox Grid.Column="0" Grid.Row="0" Content="CheckBox" Checked="checkedChanged" Unchecked="checkedChanged" Indeterminate="checkedChanged" Height="16" HorizontalAlignment="Stretch"   Name="checkBox1" VerticalAlignment="Top" Tag="0" />
                <CheckBox Grid.Column="1" Grid.Row="0" Content="CheckBox" Checked="checkedChanged" Unchecked="checkedChanged" Indeterminate="checkedChanged" Height="16" HorizontalAlignment="Stretch"   Name="checkBox2" VerticalAlignment="Top" Tag="1" />
                <CheckBox Grid.Column="0" Grid.Row="1" Content="CheckBox" Checked="checkedChanged" Unchecked="checkedChanged" Indeterminate="checkedChanged" Height="16" HorizontalAlignment="Stretch"   Name="checkBox3" VerticalAlignment="Top" Tag="2" />
                <CheckBox Grid.Column="1" Grid.Row="1" Content="CheckBox" Checked="checkedChanged" Unchecked="checkedChanged" Indeterminate="checkedChanged" Height="16" HorizontalAlignment="Stretch"   Name="checkBox4" VerticalAlignment="Top" Tag="3" />
            </Grid>
        </GroupBox>
        <GroupBox Grid.Column="1" BorderBrush="Black" BorderThickness="2">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="*" />
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
                <Label Grid.Column="0" Grid.Row="0" Content="" HorizontalAlignment="Stretch"   Name="label1" VerticalAlignment="Top" Tag="1" />
                <Label Grid.Column="1" Grid.Row="0" Content="" HorizontalAlignment="Stretch"   Name="label2" VerticalAlignment="Top" Tag="2" />
                <Label Grid.Column="0" Grid.Row="1" Content="" HorizontalAlignment="Stretch"   Name="label3" VerticalAlignment="Top" Tag="3" />
                <Label Grid.Column="1" Grid.Row="1" Content="" HorizontalAlignment="Stretch"   Name="label4" VerticalAlignment="Top" Tag="4" />
            </Grid>
        </GroupBox>
    </Grid>
</Window>

Xaml.cs

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        Label[] myLabels = new Label[4];

        public MainWindow()
        {
            InitializeComponent();

            myLabels[0]=label1;
            myLabels[1]=label2;
            myLabels[2]=label3;
            myLabels[3]=label4;

        }

        private void checkedChanged(object sender, RoutedEventArgs e)
        {
            CheckBox cb = (CheckBox)sender;
            int index;
            if (int.TryParse(cb.Tag.ToString(), out index))
            {
                if (cb.IsChecked == true)
                {
                    myLabels[index].Content="Checked";
                }
                else if (cb.IsChecked == false)
                {
                    myLabels[index].Content="UnChecked";
                }
                else
                {
                    myLabels[index].Content="?";
                }
            }
        }
    }
}
于 2012-09-14T05:12:46.787 に答える