CheckBoxコントロールがクリックされた時の処理
ツールボックスに配置したCheckBoxコントロールでは、メインページの背景色と枠線を操作するようにします。それぞれのCheckBoxコントロールのChecked/Uncheckedイベントハンドラでこの処理を実行します。メインページをユーザーコントロールから操作する場合は、「Application.Current.MainWindow」を使用してメインページをオブジェクトとして取得し、各プロパティを操作します。
また、枠線の表示/非表示は、枠線の太さの設定によって実装しています。この処理では、BorderThicknessプロパティを使用し、プロパティの値にThicknessオブジェクトを設定します。クラスのコンストラクタの引数で、縦横四辺の枠線の太さを変えることができます。
Public Class Toolbox
Private mw As Window = Application.Current.MainWindow
Private Sub CheckBox1_Checked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
mw.Background = New SolidColorBrush(Colors.BlueViolet)
End Sub
Private Sub CheckBox1_Unchecked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
mw.Background = New SolidColorBrush(Colors.White)
End Sub
Private Sub CheckBox2_Checked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
Dim th2 As New Thickness(2, 2, 2, 2)
mw.BorderThickness = th2
End Sub
Private Sub CheckBox2_Unchecked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
Dim th0 As New Thickness(0, 0, 0, 0)
mw.BorderThickness = th0
End Sub
End Class
public partial class toolbox : UserControl
{
public toolbox()
{
InitializeComponent();
}
private Window mw = Application.Current.MainWindow;
private void CheckBox1_Checked(object sender, RoutedEventArgs e)
{
mw.Background = new SolidColorBrush(Colors.BlueViolet);
}
private void CheckBox1_Unchecked(object sender, RoutedEventArgs e)
{
mw.Background = new SolidColorBrush(Colors.White);
}
private void CheckBox2_Checked(object sender, RoutedEventArgs e)
{
Thickness th2 = new Thickness(2, 2, 2, 2);
mw.BorderThickness = th2;
}
private void CheckBox2_Unchecked(object sender, RoutedEventArgs e)
{
Thickness th0 = new Thickness(0,0,0,0);
mw.BorderThickness = th0;
}
}
まとめ
C1Windowコントロールを使用すると、手軽にカスタムウィンドウを作成できます。ダイアログのデザインも、通常のWPFページと同様にデザイナを使ってXAMLで作成できるので、好きなコントロールを使って自由なレイアウトを表現できます。
C1Windowコントロールを呼び出すメソッドによって、モードレス/モーダルを切り替えることができるため、サブウィンドウが必要なアプリケーションの作成には大いに威力を発揮するコントロールだと思います。

