이것은 쉬운 것이어야하지만 알아낼 수는 없습니다. 내 맞춤 활동의 일부 속성이 변경되면 (예 : WF 디자이너의 속성 표에서 속성을 변경하여) DisplayName을 동적으로 업데이트하려고합니다. 나는 속성 정의 코드에서 이것을한다 :코드에서 DisplayName을 업데이트해도 디자이너에 표시되지 않습니까?
액티비티는 INotifyPropertyChanged를 구현한다. 그러나 DisplayName은 디자이너 화면에서 변경되지 않습니다. 내가 뭘 놓치고 있니?
답변은 맞습니다. 디자이너 (* .xaml.cs)의 업데이트 된 코드를 여기에 별도의 대답으로 붙이겠습니다. 올바른 형식 (주석으로 사용 가능하지 않음)이 있어야합니다. 이 코드는 copmpiles하고 트릭을 않습니다.
protected override void OnModelItemChanged(object newItem)
{
ModelItem modelItem = newItem as ModelItem;
if (modelItem != null)
modelItem.PropertyChanged += this.ModelItemPropertyChangedHandler;
base.OnModelItemChanged(newItem);
}
private void ModelItemPropertyChangedHandler(object sender, PropertyChangedEventArgs e)
{
if (!e.PropertyName.Equals("Type", StringComparison.OrdinalIgnoreCase))
return;
ModelItem.Properties["DisplayName"].SetValue("<" + ModelItem.Properties["Type"].Value +">");
}
이 모티프테이 활동을 랩핑하여도 해결책이 명확하지는 않습니까? 그렇습니다. 무슨 일이 일어나는지보기가 약간 어렵지만 실제로 작동합니다. 잘 했어, 윌!
ModelItem에 대한 자세한 내용은 다음 블로그 게시물을 참조하십시오. http://blogs.msdn.com/b/mwinkle/archive/2009/10/28/deep-dive-into-the-designer-data-model- modelitem-and-modelproperty.aspx 처음에는 비트 뮤치이지만 WF 디자이너에서 작업 할 때 더 명확 해집니다. – Will
@ 위 : 그레이트 블로그 포스트, 포인터 주셔서 감사합니다. 내가 그가 쓰는 모든 것을 이해하는 주에있을 때의 경이로운 생각 ... :) – Achim