0

チェックボックスのカスタム画像を作成しました。画像をクリックするたびに、チェックされたバージョンとチェックされていないバージョンを切り替えたいと思います。私のソースコード:

XAML

<CheckBox Name="checkBox1" Padding="0" BorderThickness="0" Margin="5" Grid.Row="1">
    <Image Name="image1" Margin="-14,0,0,0" Source="checkbox0.png" MouseDown="Image_MouseDown" Stretch="Uniform"/>
</CheckBox>

C#

private void Image_MouseDown(object sender, MouseButtonEventArgs e)
{
     if (e.LeftButton == MouseButtonState.Pressed)
     {
         if (checkBox1checked)
         {
             image1.BeginInit();
             image1.Source = new BitmapImage(new Uri("/checkbox0.png", UriKind.RelativeOrAbsolute));
             image1.EndInit();
             checkBox1checked = false;
         }

         if (!checkBox1checked)
         {
             image1.BeginInit();
             image1.Source = new BitmapImage(new Uri("/checkbox1.png", UriKind.RelativeOrAbsolute));
             image1.EndInit();
             checkBox1checked = true;
         }
     }
}
4

3 に答える 3

3

チェックボックスの[チェックを外してチェックする]イベントを使用し、そこに画像ソースを設定します

<CheckBox Name="checkBox1" Padding="0" Unchecked="chkbox_Unchecked" Checked="chkbox_Checked BorderThickness="0" Margin="5" Grid.Row="1">
   <Image Name="image1" Margin="-14,0,0,0" Source="checkbox0.png" Stretch="Uniform"/>
</CheckBox>




        private void chkbox_Checked(object sender, RoutedEventArgs e)
        {
            SetImage("/checkbox0.png");
        }

        private void chkbox_Checked(object sender, RoutedEventArgs e)
        {
             SetImage("/checkbox1.png");
        }

    private void SetImage(string path)
    {
        image1.BeginInit();
                image1.Source = new BitmapImage(new Uri(path, UriKind.RelativeOrAbsolute));
                image1.EndInit();

    }
于 2012-06-28T12:30:30.090 に答える
1

コード ビハインドに論理エラーがあるため、チェックボックスの値を変更したため、最初の if ステートメントの直後に 2 番目の if ステートメントが実行されます。

また、チェックボックス内に画像を定義しました。これは、画像を初期化するたびにチェックボックスの値をリセットするか、チェックボックスの外に画像を移動することを検討するか、単にパブリックフラグを使用することを検討してください

<CheckBox Name="checkBox1" Padding="0" BorderThickness="0" Margin="5" Grid.Row="1">
</CheckBox>
<Image Name="image1" Margin="-14,0,0,0" Source="checkbox0.png" MouseDown="Image_MouseDown" Stretch="Uniform"/>

コードビハインドを変更する

private void Image_MouseDown(object sender, MouseButtonEventArgs e)
    {
        if (e.LeftButton == MouseButtonState.Pressed)
        {
            if (checkBox1checked)
            {
                image1.BeginInit();
                image1.Source = new BitmapImage(new Uri("/checkbox0.png", UriKind.RelativeOrAbsolute));
                image1.EndInit();
                checkBox1checked = false;
            }
            else
            {
                image1.BeginInit();
                image1.Source = new BitmapImage(new Uri("/checkbox1.png", UriKind.RelativeOrAbsolute));
                image1.EndInit();
                checkBox1checked = true;
            }
        }
    }
于 2012-06-28T12:39:25.920 に答える
0

試してみてください:

    private void chkbox_Unchecked(object sender, RoutedEventArgs e)
    {
         SetImage("/checkbox1.png");
    }

        private void chkbox_Checked(object sender, RoutedEventArgs e)
    {
         SetImage("/checkbox1.png");
    }
于 2015-06-04T11:07:32.247 に答える