wpf 데이터 바인딩을 사용하기 전에 창 항목을 성공적으로 바인딩했습니다. 여기에서했던 것과 거의 똑같은 방식입니다.WPF 데이터 바인딩, 작동하지 않는 이유가 없습니다.
시스템 상태로 색과 텍스트를 변경하기 위해 TextBlock 바인딩을위한 XAML GUI가 있습니다.
<TextBlock
HorizontalAlignment="Left" Margin="200,359,0,0" TextWrapping="Wrap"
Text="{Binding Path=StateText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
VerticalAlignment="Top" Width="565" Height="84"
Background="{Binding Path=StateColour, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
내 xaml.cs에서 내보기 모델에 datacontext를 설정했습니다.
MobilityWelcomeViewModel mobilityWelcomeViewModel = new mobilityWelcomeViewModel();
public MobilityWelcome()
{
InitializeComponent();
this.DataContext = this.mobilityWelcomeViewModel;
}
나는이 어댑터를 통해 내 데이터 모델에 쓰는 생성자를 가지고 있습니다.
public class MobilityWelcomeViewModel
{
private bool State;
private string _Text;
private Brush _StateColour;
BackgroundWorker StateWorker = new BackgroundWorker();
}
public ShellEMobilityWelcomeViewModel()
{
this._ANMStateColour = Brushes.White;
this.ANMStateWorker.DoWork += this.ANMStateWorker_DoWork;
this.ANMStateWorker.RunWorkerCompleted += this.ANMStateWorker_RunWorkerCompleted;
this.ANMStateWorker.RunWorkerAsync();
this._ANMText = "Loading ANM State";
IApplicationPointAdapter testWrite = AdapterFactory.Instance.GetApplicationPointAdapter();
testWrite.WriteBinary("HMI.EV.SITE1.STATUS.CONTACTBREAKEROPEN", false);
}
내보기 모델에는 속성이 있습니다.
public Brush StateColour
{
get { return this._StateColour; }
set { this._StateColour = value; }
}
public string StateText
{
get { return this._Text; }
set { }
}
은 내가 디버그에서이 값을 변경할 볼 수있는 배경 노동자.
나는 정말로 여기저기서 혼란 스럽다. 전체 바인딩은 표면적으로 매우 단순 해 보입니다. 상당히 새로운 것에서부터 순진한 지식까지는 내가 잘못한 것을 볼 수 없습니다.
미리 감사드립니다. (또한 변수 이름을 변경하여 내 프로젝트를 위장하여 유사 객체간에 맞춤법이 잘못 인식되거나 무시되는 경우)
감사합니다 아래, 나는 인터페이스를 구현하고 생성자로 인스턴스를 이동처럼
재산 세터가 있어야합니다. 그러나 아무런 효과가 없었다. 텍스트 블록 대신 텍스트 상자를 사용해 보았지만 뷰 모델 매개 변수가 원격으로 변경되었습니다. 뷰 모델에서는 텍스트 만 변경되지만 브러쉬는 –
미안하지만 문제를 완전히 이해할 수 있는지 확실하지 않습니다. 그러나 브러시를 속성으로 사용하는 샘플 프로젝트를 만들고 viewmodel에서 변경할 때 텍스트 블록의 배경을 업데이트합니다. 내가 말한 한 가지는이 줄에서 개인 속성의 색을 변경하려고합니다 ._ANMStateColour = Brushes.White; 공공 재산으로 변경할 수 있습니까? ANMSTateColour = Brushes.White와 같이 개인 속성이 OnPropertyChanged를 실행하지 않아 UI에 해당 값이 변경되었음을 알릴 수 있습니다. – Krishna
수정 사항을 발견했습니다! 내 사용 문이 잘못된 유형의 브러시를 가져 오는 중입니다. System.Windows.Drawing을 사용하여 System.Windows.Media를 사용하여 변경했습니다. –