グループボックスに問題があります。グループボックスにはグリッドがあり、その中に約20個のチェックボックスがあります。問題は、上記のすべてのチェックボックスの値を別のグループボックスに表示する必要があることです。
私はWPF C#で作業しています。
上記に対してトリガーするイベントはどれですか?
チェックされたチェックボックスがチェックされていない場合、2番目のグループボックスに表示されている値は消えます。
Wpf には、Checked Event、UnChecked Event、およびIndeterminate Eventがあり、それらはすべて Generic を使用するRoutedEventHandler
ため、それらを Common Event Handler に接続し、Senders Name またはTag
Property の 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="?";
}
}
}
}
}