0
단추를 클릭 할 때 배경 이미지가 다른 단추로 변경되면 단추를 놓으면 원래 이미지로 돌아갑니다. 많은 연구를 거쳐이 tutorial을 찾았습니다. 그 덕분에 많은 도움이되었습니다. 하지만 문제는 버튼을 비활성화 할 수 없다는 것입니다. 버튼이 비활성화되어 있다는 것을 보여줍니다.하지만 클릭하면 비활성화 된 것처럼 작동합니다! 여기에 코드단추 비활성화 비활성화
using System;
using System.Windows;
using System.Windows.Media.Imaging;
namespace DotNetApp
{
public partial class ButtonImage
{
#region Fields
public new static readonly DependencyProperty IsEnabledProperty = DependencyProperty.Register("IsEnabled", typeof (bool), typeof (ButtonImage), null);
public static readonly DependencyProperty ImageSourceProperty = DependencyProperty.Register("ImageSource", typeof (string), typeof (ButtonImage), null);
public static readonly DependencyProperty ImagePressedSourceProperty = DependencyProperty.Register("ImagePressedSource", typeof (string), typeof (ButtonImage), null);
public static readonly DependencyProperty ImageDisabledSourceProperty = DependencyProperty.Register("ImageDisabledSource", typeof (string), typeof (ButtonImage), null);
private BitmapImage _image;
private BitmapImage _imagePressed;
private BitmapImage _imageDisabled;
private bool _isPressed;
#endregion
#region Constructor
public ButtonImage()
{
InitializeComponent();
}
#endregion
#region Properties
public new bool IsEnabled
{
get { return (bool)GetValue(IsEnabledProperty); }
set
{
SetValue(IsEnabledProperty, value);
SetImageFromState();
}
}
public string ImageSource
{
get { return (string) GetValue(ImageSourceProperty); }
set
{
SetValue(ImageSourceProperty, value);
_image = SetImage(value);
SetImageFromState();
}
}
public string ImagePressedSource
{
get { return (string) GetValue(ImagePressedSourceProperty); }
set
{
SetValue(ImagePressedSourceProperty, value);
_imagePressed = SetImage(value);
SetImageFromState();
}
}
public string ImageDisabledSource
{
get { return (string) GetValue(ImageDisabledSourceProperty); }
set
{
SetValue(ImageDisabledSourceProperty, value);
_imageDisabled = SetImage(value);
SetImageFromState();
}
}
#endregion
#region Event Handlers
private void ButtonIsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
{
SetImageFromState();
}
private void ButtonMouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
{
_isPressed = true;
SetImageFromState();
}
private void ButtonMouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
{
_isPressed = false;
SetImageFromState();
}
#endregion
#region Private Methods
private static BitmapImage SetImage(string imageSource)
{
BitmapImage bitmapImage = null;
if (!string.IsNullOrEmpty(imageSource))
{
bitmapImage = new BitmapImage(new Uri(imageSource, UriKind.RelativeOrAbsolute));
}
return bitmapImage;
}
private void SetImageFromState()
{
if (!IsEnabled)
{
image.Source = _imageDisabled;
}
else if (_isPressed)
{
image.Source = _imagePressed;
}
else
{
image.Source = _image;
}
}
#endregion
}
}
의 일부가 여기에 XAML
입니다<Tap_Test:ButtonImage ImageSource="/images/buttons/star2.png"
ImageDisabledSource="/images/buttons/star2lock.png"
ImagePressedSource="/images/buttons/star2-2.png"
Style="{StaticResource ButtonImageStyle}"
x:Name="star2" Margin="136,80,134,480" BorderBrush="{x:Null}" Click="star2_Click" IsEnabled="False"/>
당신은 내가 제공된 링크에서 전체 코드를 볼 수 있습니다! star2.IsEnable = false;
도 시도했지만 작동하지 않았습니다. 어떤 제안? 감사!
안녕 @KillaKem 덕분에 . 왜 그런가? –
컴파일러가 disableButton getter의 본문을 원하고 편집 된 코드가 문제를 해결하는지 확인합니다. – KillaKem
아, 고맙지 만 여전히 버튼이 비활성화되지 않습니다. (계속 클릭 할 수 있습니다.) –