2014-03-04 101 views
0

我試圖創建一個用戶控件,充當IP地址持有者。 通常,控件由4個文本框組成,它們一起具有完整的IP地址。 後面的用戶控制代碼中有一個公共屬性,其中包含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

它比這更容易,你只需要使用MaskedInputTextEdit像這樣,http://wpftoolkit.codeplex.com/wikipage?title=MaskedTextBox

或選擇其中之一。 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,指出它在雙向模式結合。 如下:

 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"); 
     } 
    }