0
속성에 연결된 텍스트 상자를 생성하는 코드를 작성하고 있습니다. PropertyInfo로 저장된 리플렉션을 사용하여 찾은 속성에 소스를 설정할 수있는 방법이 있습니까? 속성을 겪고위한WPF에서 리플렉션을 사용하여 속성에 바인딩 할 수 있습니까?
코드 :
foreach(PropertyInfo prop in GetType().GetProperties())
{
UI.Text ctrl = new UI.Text(prop.Name, prop.GetValue(this).ToString(), prop);
sp.Children.Add(ctrl);
}
(참고 : UI.Text는 텍스트 상자를 포함하는 사용자 지정 컨트롤이며, SP는 StackPanel에있다)
바인딩 코드 :
Binding bind = new Binding() { Source = prop };
if (prop.CanWrite)
{
TextBox.SetBinding(TextBox.TextProperty, bind);
}
else
{
TextBox.IsEnabled = false;
}
현재 "양방향 바인딩은 경로 또는 XPath가 필요합니다"라는 오류가 발생합니다. 이는 일반적으로 읽기 전용 속성에 바인딩하려고 할 때 발생합니다. 코드가 보호되므로 PropertyInfo에 대한 바인딩 만이 속성 자체에 바인딩되지 않는다는 것은 명백합니다.
속성 구현을 표시 할 수 있습니까? –
Binding의 Path를 속성의 이름으로 설정하고, Source를 속성을 소유 한 객체로 설정합니다. – Clemens