2016-11-07 6 views
-4

알았어. 그래서 오랜 시간이 걸렸지 만, 더 잘 짜여진 질문을 할 수있었습니다. 나는이에 내려 깍는 관리 Reflection 사용 :메서드를 사용하여 WPF 요소 속성을 변경하는 방법

public void setButton(Button Button, string Content, string ToolTip) { PropertyInfo contentProperty = Button.GetType().GetProperty("Content"); PropertyInfo toolTipProperty = Button.GetType().GetProperty("ToolTip"); contentProperty.SetValue(Button, Convert.ChangeType(Content, contentProperty.PropertyType)) toolTipProperty.SetValue(Button, Convert.ChangeType(ToolTip, contentProperty.PropertyType)) } 내가이 테스트를했는데 꽤 잘 작동하지만, 남아있는 유일한 문제는 내가이 같은 방법뿐만 아니라 Click 이벤트를 변경 할 수있는 방법인가?

+0

지금은 런타임 효율성에 대해 걱정하지 마십시오. 성능 문제가있는 경우 나중에 최적화 한 다음 나중에 최적화하십시오. –

+0

@EdPlunkett 다시 만나서 반가워요. 에드, 당신 도우미 야, 안 그래? 여기에 구체적으로 설명하자면 문제는 ** 런타임 ** 효율성이 아니라 관리 효율성입니다. 여러 가지 이벤트가 있기 때문에 각 이벤트마다 자체 선택이 필요합니다. 이러한 이벤트를 설정하는 방법이 필요하지만 한 가지 방법으로 여러 개체의 속성을 변경하는 방법을 알지 못합니다. TextBox에 설정하려고하는 "EV000"문자열에 따라 특정 속성을 설정하십시오. – Zephylir

+0

글쎄, "효율성"에 대해 걱정하지 마시고 걱정하지 마시고 코드가 먼저 작동하도록하십시오. 여기서 묻고있는 질문을 바탕으로, 그것은 연령대에 대한 견고하고 유지 보수가 쉬운 코드를 작성하는 최단 경로상의 다음 단계입니다. –

답변

1

은 WPF에서 이벤트 및 코드 숨김을 사용하지 마십시오.

doCommands을 사용하고 데이터 바인딩.

WPF Tutorial.net과 같은 자습서를 읽으면서 게임을 WPF로 쉽게 만들 수있는 개념을 소개 할 것을 권합니다.

+0

왜 그것이 현명한 선택이 될지 알 수는 있지만, 나는 그 명령을 사용하여 필요한 것을 어떻게 성취 할 수 있는지 보지 못한다. 내가 볼 수있는 한, 메소드는 변수, 필드 등을 사용하여 수행 할 수있는 코드 행을 실행합니다. TextBox의 텍스트 속성이 변경 될 때 실행되는 명령을 추가하지 않는 한 – Zephylir

+0

@ Zephylir "데이터 바인딩"은 "명령"과 거의 같은 크기의 글꼴입니다. 화면에 표시하는 데 문제가 있습니까? –

+0

@EdPlunkett UI 요소에서 사용할 정보를 저장하기위한 변수를 만든 다음 명령 내에서 해당 변수의 설정 값을 사용하면 확실히 작동 할 수 있습니다. 하지만 그 코드를 사용하는 것만으로도 코드를 사용하는 것만 큼 좋을 것입니다. XAML과 C# 사이에 무엇이 잘못되었는지 알아보기 위해 더 많은 것을 선호합니다. – Zephylir