윈폼만 주로 하다가 wpf를 처음하니 영 생각 처럼 안되네요.
안드로이드의 xml이랑도 좀 다른거 같고요 ㅠㅠㅠㅠ
일단 하고자 하는 것은 기존의 textbox에 힌트를 넣고 싶다는 것 입니다. 다른 사람들의 소스를 보니 스타일로 한 예시도 있던데 이게 좀 유동적이게 해야 되고 자주 사용 하다 보니(힌트 내용, 힌트 폰트, 힌트 색상 등등) 이것저것 해보는데 잘 안되네요.
internal class HintTextBox : TextBox
{
public static readonly DependencyProperty HintTextProperty =
DependencyProperty.Register("HintText", typeof(string), typeof(HintTextBox),
new PropertyMetadata("", new PropertyChangedCallback(HintChanged)));
public string HintText
{
get => (string)GetValue(HintTextProperty);
set => SetValue(HintTextProperty, value);
}
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
if (this.Text == "")
{
FormattedText formattedText = new FormattedText(
HintText,
CultureInfo.GetCultureInfo("ko-KR"),
FlowDirection.LeftToRight,
new Typeface(this.FontFamily, this.FontStyle, this.FontWeight, this.FontStretch),
this.FontSize,
new SolidColorBrush(Color.FromRgb(203, 203, 203)),
VisualTreeHelper.GetDpi(this).PixelsPerDip
);
drawingContext.DrawText(formattedText, new Point(16, Height / 2 - this.FontSize));
}
}
protected override void OnTextChanged(TextChangedEventArgs e)
{
base.OnTextChanged(e);
}
private static void HintChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
}
}
일단 이렇게 했습니다. textbox를 상속 받아서 거기에 힌트 속성을 추가한 다음 해당 컨트롤을 그릴 때 텍스트가 없다면 힌트를 그려주는 방식으로 하였습니다. 그렇지만 실제론 그려지지 않더라고요… 왜 안그려지는지도 모르겠고 디버깅해보니 잘 타는 듯 한데;;;
최근 8개월 정도 다른 개발하다가 c# 다시 잡으니 너무 어색하네요. 선배님들 도와주시면 감사하겠습니다.
(wpf mvvm databinding을 공부해서 적용하려고 하는데 wpf는 인터넷에 자료가 다른 개발에 비해 많이 적은거 같더라고요. 괜찮은 사이트나 공부 자료 있으면 알려주시면 감사하겠습니다.)