2014-03-04 4 views
0

IP 주소 소유자 역할을하는 사용자 정의 컨트롤을 만들려고합니다. 일반적으로 컨트롤은 전체 IP 주소를 가진 4 개의 텍스트 상자로 구성됩니다. 뒤에있는 사용자 제어 코드의 은 IPAddress 유형의 IP 주소를 보유하는 공용 속성입니다. ViewModel의 속성을 바인딩 할 수 있도록이 속성을 노출하려고했습니다. 여기 IP 주소 텍스트 상자 사용자 정의 컨트롤

내가 노출 할 사용자 컨트롤에서 속성입니다 :

public IPAddress IPAddressObject 
    { 
     get 
     { 
      return new IPAddress(m_IPAddress); 
     } 
     set 
     { 
      m_IPAddress = value.GetAddressBytes(); 
      NotifyPropertyChanged("Octet1"); 
      NotifyPropertyChanged("Octet2"); 
      NotifyPropertyChanged("Octet3"); 
      NotifyPropertyChanged("Octet4"); 
     } 
    } 

그 값이 제대로 업데이트됩니다하지만 난 바인딩 사용하여 내 뷰 모델 변수에 값을 얻을 수 없습니다. 나는 어떤 식 으로든 종속성 속성을 사용해야한다는 것을 알고 있지만, 내 속성으로 그 값을 묶는 방법을 모른다. 앞서

감사합니다 :)

답변

0

그것보다 더 쉽게, 당신은 단지 등이 하나 http://wpftoolkit.codeplex.com/wikipage?title=MaskedTextBox

을 MaskedInputTextEdit를 사용하거나 이들 중 하나를 선택해야합니다. Where can I find a free masked TextBox in WPF?

Textbox validation for IP Address in WPF

+0

내가 그 컨트롤을 작동하는 방법을 모르고이없는 말을해야, 난 확장 툴킷에 그것을 발견하지만, 예를 들어 좋을 것입니다. – user1531186

+0

문자열을 반환하고 IPAddress.Parse()를 사용합니다. http://msdn.microsoft.com/en-us/library/system.net.ipaddress.parse(v=vs.110).aspx – AlSki

-3

잘 나는 분명히 내가 그것을 양방향 모드로 결합 말한다 내 사용자 컨트롤의 DP에 특정 메타 데이터를 추가했다, 문제는 내 VM가 제대로 업데이트되지 않았습니다이었다, 해결책을 발견했다. 다음과 같이

 public static readonly DependencyProperty MyCustomProperty =DependencyProperty.Register("MyCustom", typeof(IPAddress), typeof(IPAddressTextBox), new FrameworkPropertyMetadata(IPAddress.Parse("0.0.0.0"), FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)); 
    public IPAddress MyCustom 
    { 
     get 
     { 
      return this.GetValue(MyCustomProperty) as IPAddress; 
     } 
     set 
     { 
      this.SetValue(MyCustomProperty, value); 
      // NotifyPropertyChanged("MyCustom"); 
     } 
    } 
관련 문제