2013-07-02 3 views
0

현재 내 프로그램 중 하나를 WinForms에서 WPF로 변환하는 중입니다. 첫 번째 문제는 WPF에서 컨트롤의 텍스트 값을 설정하는 것입니다. 나는 일에 일부를 얻을 수있는 몇 가지 변경WPF의 Control.Text

delegate void SetTextCallback(Control c, string text); 

private void SetText(Control c, string text) 
{ 
    if (c.InvokeRequired) 
    { 
     SetTextCallback d = new SetTextCallback(SetText); 
     this.Invoke(d, new object[] {c, text}); 
    } 
    else 
    { 
     c.Text = text; //This is where I have not found a way to replicate. 
    } 
} 

하지만 지금까지이 내가 제외 작동하는 것 같다 WPF에있는 것입니다 : 내 윈폼 프로그램에서, 나는 다음과 같습니다 코드를 작업 한 내가 실제로 컨트롤의 텍스트를 설정하려고하는 부분. 이 사이트 및 MSDN 섹션에 물건을 읽은 후 발견 한 것과

delegate void SetTextCallback(Control c, string text); 

private void SetText(Control c, string text) 
{ 
    if (c.Dispatcher.CheckAccess()) 
    { 
     SetTextCallback d = new SetTextCallback(SetText); 
     this.Dispatcher.Invoke(d, new object[] {c, text}); 
    } 
    else 
    { 
     c.Text = text; 
    } 
} 

컨트롤이 특별히 WPF 텍스트 상자 다음 c.Content의 명령을하는 경우라면 나는 c.Text 명령을 호출 할 수 있다는 것입니다 컨트롤은 특히 WPF 레이블입니다. 그러나, 나는 여기에있는 것처럼 일반 컨트롤 C 중 하나를 호출 할 수 없습니다. 거기에 어떤 방법이나 명령을 내 컨트롤 C의 텍스트 값을 설정하는 데 사용할 수있는, 또는 다른 방법은 내가 아직도 그 텍스트를 편집 할 수있는 내 SetText 함수를 설정할 수 있도록 코드를 수정할 수 있습니다 컨트롤 (텍스트 상자, 레이블 등)을 동일한 방식으로 사용합니까?

답변

1

WPF에는 여러 가지 다양한 콘텐츠 모델이 있습니다. MSDN에 좋은 프라이머가 있습니다.

당신이 DependencyProperty으로 할 수있는 멋진 일은 그것에 신경 쓰지 않는 DependencyObject에 설정되어 있습니다. 따라서 다음을 수행 할 수 있습니다.

c.SetValue(TextBlock.TextProperty, text); 
c.SetValue(ContentControl.ContentProperty, text); 

콘텐츠를 표시하는 대부분의 컨트롤을 포함합니다.

+0

@ VarnerBeast14 죄송합니다. 정확한 정적 필드를 사용하여 답변을 업데이트했습니다. 나는 끝에 Property를 추가하는 것을 잊었다. 'ContentControl'과'TextBlock' 모두'System.Windows.Controls'에 있습니다. TextElement.TextProperty'를 설정할 수 있다는 잘못된 생각이 들었습니다. TextElement'는 텍스트 형식화 속성 만 정의하고 내용 속성은 정의하지 않기 때문입니다. –

+0

나는 그것을 가지고있다. 내가 필요로하는 것처럼 작동하는지 확신 할 수는 없지만 최소한 오류없이 받아 들인다. 나는 돌아와서 그것이 작동한다면 대답으로 표시 할 것이다. – VarnerBeast14

+0

@ VarnerBeast14 내가 지적해야 할 것은'Control'을 전달하기 때문에'FrameworkElement'에서 파생 된'TextBlock'을 가지지 않을 것입니다. 특정 구현 세부 사항 대신 수행하려는 작업에 대해 질문 할 수 있습니다. WPF와 WinForms 사이에는 몇 가지 주요한 차이점이 있습니다. –