반응형
WPF: 단순한 TextBox 데이터 바인딩
저는 다음 수업이 있습니다.
public partial class Window1 : Window
{
public String Name2;
public Window1()
{
InitializeComponent();
Name2 = new String('a', 5);
myGrid.DataContext = this;
}
// ...
}
그리고 나는 그 문자열을 표시하고 싶다.Name2
텍스트 상자에 입력합니다.
<Grid Name="myGrid" Height="437.274">
<TextBox Text="{Binding Path=Name2}"/>
</Grid>
그런데 문자열이 표시되지 않습니다.또한 문자열이Name2
를 사용하여 정기적으로 갱신됩니다.TimerCallback
데이터가 변경되었을 때 텍스트 박스가 업데이트되도록 하기 위해 필요한 것이 있습니까?
Name2는 필드입니다.WPF는 속성에만 바인드됩니다.변경 내용:
public string Name2 { get; set; }
이 최소한의 구현으로 인해 TextBox는 Name2에 대한 프로그램 변경에 응답하지 않습니다.따라서 타이머 업데이트 시나리오에서는 INotify를 구현해야 합니다.변경된 속성:
partial class Window1 : Window, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private string _name2;
public string Name2
{
get { return _name2; }
set
{
if (value != _name2)
{
_name2 = value;
OnPropertyChanged("Name2");
}
}
}
}
Window 클래스가 아닌 다른 데이터 개체로 이동하는 것이 좋습니다.
장래의 필요에 따라서.
Visual Studio 2013에서 를 참조하십시오.NET Framework 4.5, 창 속성의 경우 추가해 보십시오.ElementName=window
할 수 있을 것 같아요
<Grid Name="myGrid" Height="437.274">
<TextBox Text="{Binding Path=Name2, ElementName=window}"/>
</Grid>
데이터 소스로 사용하는 데 필요한 데이터 바인딩 알림(INotify)이 창에 구현되어 있지 않습니다.Property Changed 인터페이스
데이터 바인딩은 속성과 함께 사용하기 위한 것이므로 "Name2" 문자열도 공용 변수가 아닌 속성이어야 합니다.
오브젝트를 데이터 소스로 사용하는 데 필요한 인터페이스의 실장은 여기서 확인할 수 있습니다.
언급URL : https://stackoverflow.com/questions/1725554/wpf-simple-textbox-data-binding
반응형
'sourcecode' 카테고리의 다른 글
Bash에서 변수가 비어 있는지 확인하는 방법 (0) | 2023.04.19 |
---|---|
SSL/TLS 보안 채널에서 Powershell Invoke-WebRequest 실패 (0) | 2023.04.19 |
예기치 않은 bash 종료에서 생성된 임시 파일을 제거하는 중 (0) | 2023.04.19 |
내 Objective-C 싱글톤은 어떤 모습이어야 할까요? (0) | 2023.04.19 |
WPF에서 GridViewColumn 데이터를 자동 조정하고 오른쪽 정렬하려면 어떻게 해야 합니까? (0) | 2023.04.19 |