Edit2가 :이에서 INotifyPropertyChanged를 구현와 함께 종속성 속성을 사용하는 한 가지 방법.
텍스트 상자의 텍스트가 변경 될 때마다 PropertyChangedEvent가 실행됩니다. 창 창은 WatermarkTextBox의 WatermarkText 종속성 속성에 액세스하여이 이벤트에 가입합니다. 여기
는 보이는 방법은 다음과 같습니다
WatermarkTextbox.xaml :
<TextBox Name="watermarkTextBox" ...
TextChanged="watermarkTextBox_TextChanged"/>
WatermarkTextbox.xaml.cs :
public partial class WatermarkTextBox : UserControl, INotifyPropertyChanged
{
...
public static readonly DependencyProperty WatermarkTextProperty =
DependencyProperty.Register("WatermarkTextProperty", typeof(String),
typeof(WatermarkTextBox), new PropertyMetadata(null));
public String WatermarkText
{
get { return watermarkTextBox.Text; }
set { OnPropertyChanged("WatermarkText"); }
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
private void watermarkTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
WatermarkText = this.watermarkTextBox.Text;
}
}
[MainWindow를] .xaml가 :
<TextBlock Text="{Binding ElementName=usernameArea Path=WatermarkText}" .../>
dependency property을 추가하면 기본적으로 XAML (일반적으로 바인딩은 물론)의 수정을 위해 사용자 정의 컨트롤에 값을 표시 할 수 있습니다. 기본적으로 Background
이 흰색이기 때문에
는 또한, 흰색보다 어두운 뭔가에 TextBlock
의 특성을 Foreground
(텍스트 색상)을 변경할 수 있습니다.
나는 그 코드를하기 전에 .... 시도하지 않는다. = ( – 0070
전경을 검은 색으로 변경 했습니까 – funseiki
@ 0070 죄송합니다. 의존성 속성을 잊어 버렸습니다. 대답으로 해결책을 업데이트했습니다.이 기능은 나를 위해 작동했습니다. – funseiki