2017-04-18 4 views
-1

최대 길이가 30 인 txtMain이라는 텍스트 상자 하나가 있고 길이가 각각 txtName1 및 txtName2 인 두 개의 텍스트 상자가 있습니다. 15.하나의 텍스트 상자를 두 개의 반쪽으로 나누고 wpf, databinding 및 pure xaml을 사용하여 다른 두 개의 텍스트 상자 채우기

txtMain의 처음 15자를 txtName1에 채우고 txtMain의 다음 15자를 txtName2에 채 웁니다.

코드 숨김 이벤트를 사용하여이 작업을 수행 할 수 있지만이 목적으로 데이터 바인딩, 트리거 및 순수 XAML을 사용하려고합니다.

답변

0

및 XAML 직접 데이터 조작을 할 수있는 능력이없는 마크 업 언어이기 때문에

가능하지

뒤에 코드없이 문자열 및 프로세스를 추출하는 순수 XAML.

는하지만 난

바인딩 할 세 가지 속성을 가지고 데이터 바인딩 사용하고 싶습니다. 변경 사항은 주 변경시 발생하며 변경 사항을 다른 두 변경 사항과 간단히 알립니다.

private string _main; 

public string MainString 
{ 
    get { return _main; } 
    set { 
      _main = value; 
      OnPropertyChanged("MainString"); 
      OnPropertyChanged("FirstPart"); 
      OnPropertyChanged("SecondPart"); 
     } 
} 

public int Size { get { return MainString?.Count ?? 0; } } 

public string FirstPart { get 
      { return MainString?.Substring(0, Math.Min(15, Size)) ?? string.Empty; } }. 

public string SecondPart 
{ 
    get 
    { 
     if (size > 15) 
      return str.Substring(15, Math.Min(15, (size - 15))).Dump(); 

     return string.Empty; 
    } 
} 

이 문제를 해결하는 또 다른 방법은 텍스트 정보를 나눌 수있는 특정 컨버터를 작성하는 것입니다 : 다른 두 단지 등 필요한 문자열을 하위 문자열. 그러나 이것도 해결책을 제시하는 코드입니다.

+0

tx OmegaMan.I는 코드 뒤에서 만 코드를 사용하고 있었지만 어쩌면 누군가가 더 좋은 아이디어를 가지고 있을지도 모른다고 생각했습니다. :-). 즉 순수한 xaml만을 사용하는 방법입니다. 어쨌든 tx를 사용하여 필자의 요구 사항 뒤에있는 코드를 통해 해결해야합니다. :-). –

+0

@JatinderWalia 답변에 만족하고 문제가 해결되면 답을 '답'으로 표시하여 다른 사람들이 해결 방법을 알 수 있도록하십시오. :-) – OmegaMan