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コントロールを呼び出すメソッドによって、モードレス/モーダルを切り替えることができるため、サブウィンドウが必要なアプリケーションの作成には大いに威力を発揮するコントロールだと思います。