2017-12-31 373 views
0

텍스트 상자와 콤보 상자를 유지하기 위해 표를 사용하고 있습니다. 콤보 상자에서 선택된 항목과 텍스트 상자에서 텍스트를 가져 오려고합니다. 콤보 또는 텍스트 상자로 UIElement를 캐스팅하지 않고이 작업을 수행 할 수있는 방법이 있습니까? 아래는 현재이 작업을 수행하는 방법입니다.WPF 콤보 상자 또는 C#의 텍스트 상자에서 텍스트 가져 오기

foreach (UIElement field in _fields) 
{ 

    string val=""; 
    if (field is TextBox) 
    { 
     TextBox bx = field as TextBox; 
     val=bx.Text; 
    } 
    else if (field is ComboBox) 
    { 
     ComboBox bx = field as ComboBox; 
     val=bx.SelectedItem.ToString(); 
    } 
} 

감사

+0

MVVM 패턴을 사용하면 뷰 모델이 창/페이지의 데이터와 동기화되어 실제 컨트롤에 연결할 필요가 없습니다. 이 코드의 목적은 무엇입니까? 'val'처럼 보이는 것은 항상 반복되는 마지막 컨트롤의 값을 가질 것입니다. – Crowcoder

+0

나는 기본적으로 특정 구문을 필요로하는 일종의 텍스트 파일 편집기를 개발하려고한다. ':'로 구분 된 6-11 개의 필드가있는 파일 섹션이 있으며, 일부 필드에는 여러 옵션이있을 수 있으므로 콤보 상자가 있고 다른 필드는 이름이나 문자열 값이 필요합니다. 파일의 구문을 검증하는 기능이 있습니다. 위의 코드는 사용자가 입력 한 각 행을지나 가며 텍스트를 가져와 유효성 검사 함수에 대한 파일 객체를 만듭니다. val은 파일 객체에 추가하려는 데이터입니다. –

답변

1

WPF의 데이터에 액세스하는 가장 좋은 방법은 데이터 바인딩을 사용하거나 MVVM을 사용하는 것입니다. XAML에 x : Name을 지정하여 요소에 이름을 부여하는 것은 빠르고 지저분한 방법 일 수 있습니다. 그런 다음 코드에서 요소를 캐스팅 할 필요가 없습니다.