2012-07-22 3 views
0

내가 컨트롤 이름, 제어 AssemblyQualifiedName, 속성 이름과 속성 값에 대한 문자열을 사용하여 컨트롤의 속성을 변경 시도하고
동적으로 변경 특성


내가 시도하는 것 :

public void ChangeIt(string ctrlName, string typ, 
        string prop, string value) 
{ 
    Type t = Type.GetType(typ); 
    dynamic obj = Convert.ChangeType(App.Current.MainWindow.FindName(ctrlName), t); 
    // Now how to 
    // obj.Prop=value; 
} 

ChangeIt("Label1", 
     "System.Windows.Controls.Label, PresentationFramework, Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35", 
     "Content", "Hellow World!"); 

당신에게

+0

왜이 작업을 수행하려고합니까? 그것이 나에게 정결 한 것처럼 보이지 않기 때문에 당신은 우리에게 약간의 상황을 줄 수 있습니까? – Dylan

+0

@Dylan, 자바 스크립트를 사용하여 속성을 자동으로 변경하려고합니다. WebBrowser에 호스팅되어 있으며 COM 표시가 아니기 때문에 WPF 창에 연결할 수 없습니다. – MrBassam

+0

오, ChangeIt()은 클라이언트에서 호출하려고하는 것입니다. 사이드 자바 스크립트 !? 나는 당신이라면 달성하려는 목표를 달성하기 위해 한발 물러서서 다른 방법을 평가할 것입니다. 미안해서 더 이상 도움이 될 수 없어. – Dylan

답변

1
감사

유형이 전혀 필요하지 않으며 동적을 사용할 필요가 없습니다.

public void ChangeIt(string ctrlName, string typ, string prop, string value) { 
    object obj = App.Current.MainWindow.FindName(ctrlName); 
    obj.GetType().GetProperty(prop).SetValue(obj, value); 
} 
+0

대단히 감사합니다 :) – MrBassam