0
나는 이것이 끔찍한 공통적 인 문제임을 알고 있지만 buttonContent의 "Default"를 변경할 때 "Pressed1"및 "Pressed2"콘텐츠로 업데이트하는 버튼을 얻을 수 없다는 것을 알고 있습니다. 몇 가지 질문 보았다 데, 내가 나를 위해 일하려는 답변을 찾을 수없는, 단순히 여기에 어떤 문제가 있는지 알 수 없기 때문에 여기에 엉터리 코드입니다 : 버튼과WPF 데이터 바인딩, 값이 업데이트되지 않음
창
public partial class MainWindow : Window
{
Code_Behind cB;
public MainWindow()
{
cB = new Code_Behind();
this.DataContext = cB;
InitializeComponent();
}
private void button_Click(object sender, RoutedEventArgs e)
{
cB.buttonPressed();
}
}
그리고 여기에는 별도의 클래스
public class Code_Behind : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _buttonContent = "Default";
public string buttonContent
{
get { return _buttonContent; }
set {
if (_buttonContent != value)
{
buttonContent = value;
OnPropertyChanged("buttonContent");
}
}
}
public void buttonPressed()
{
int timesPressed = 0;
if (timesPressed != 1)
{
_buttonContent = "Pressed1";
timesPressed++;
}
else if (timesPressed != 2)
{
_buttonContent = "Pressed2";
timesPressed++;
timesPressed = 0;
}
}
protected void OnPropertyChanged(string name)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
}
네, 실제로 보인다 여기 문제입니다해야합니다. 글쎄, 그것은 정확하게 속성이 처음에 어떻게 작동하는지 설명하지 못했습니다. 클래스의 객체 인스턴스에 바인딩하는 것과 클래스에 바인딩하는 것 사이에 차이가 있습니까? – Zephylir
"클래스에 직접 바인딩"은 클래스 (즉 정적) 속성에 바인딩하는 것을 의미합니까? 여기에서 읽으십시오 : [데이터 바인딩 개요] (https://msdn.microsoft.com/en-us/library/ms752347(v=vs.110) .aspx). – Clemens
그런데 "별도의 클래스"(Code_Behind라고 함)는 일반적으로 MVVM 아키텍처 패턴에서 뷰 모델 *이라고 부릅니다. – Clemens