我試圖構建一個基本上是IPv4地址的文本框的UserControl。具有多個文本框的UserControl聚合成一個DependencyProperty
在UserControl中有4個文本框,TextBlock包含一個「。」。每個文本框之間:
<Grid Grid.IsSharedSizeScope="True">
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="GroupA" />
<ColumnDefinition Width="*" />
<ColumnDefinition SharedSizeGroup="GroupA" />
<ColumnDefinition Width="*" />
<ColumnDefinition SharedSizeGroup="GroupA" />
<ColumnDefinition Width="*" />
<ColumnDefinition SharedSizeGroup="GroupA" />
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" TabIndex="0" x:Name="TextOctet1" />
<TextBlock Grid.Column="1" Text="." />
<TextBox Grid.Column="2" TabIndex="1" x:Name="TextOctet2" />
<TextBlock Grid.Column="3" Text="." />
<TextBox Grid.Column="4" TabIndex="2" x:Name="TextOctet3" />
<TextBlock Grid.Column="5" Text="." />
<TextBox Grid.Column="6" TabIndex="3" x:Name="TextOctet4" />
</Grid>
我希望我能有一個DependencyProperty稱爲ip地址上,我可以綁定到,或在XAML中設置「123.123.123.123」的默認值的控制。
<local:IPBox IPAddress="123.123.123.123" />
我以爲我可以使用類似MultiBinding和IMultiValueConverter:
public class IPAddressConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return String.Format("{0}.{1}.{2}.{3}", values[0], values[1], values[2], values[3]);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
return ((string)value).Split('.');
}
}
但我相信會做的我想的正好相反。 MultiValueConverter會將多個業務邏輯屬性合併爲一個TextBox綁定到的單個屬性。
相反,我想綁定一個業務邏輯屬性(一個表示IPv4地址的字符串),並讓每個Octet在其自己的TextBox中顯示。然後,如果任何Octet文本框發生更改,則會更新IPAddress依賴項屬性。
這可能嗎?我以正確的方式思考這個問題嗎?
所以,如果我我的用戶的ip地址依賴屬性綁定到一些正確格式化字符串,怎麼辦八位得到更新? (雙向綁定): –
Scott
2011-05-16 18:20:24
然後我認爲你需要實現一個視圖模型。看我的編輯。 – 2011-05-16 21:41:18
哈...所以我試過所有的這些東西的第一次......這是做不到的。我後來發現在我的dp中有默認數據導致它在我綁定到與默認數據已經相同的數據時顯示爲空白:* public static readonly DependencyProperty IPAddressProperty = DependencyProperty.Register(「IPAddress」,typeof(字符串)的typeof(IPBOX),新UIPropertyMetadata( 「0.0.0.0」,新PropertyChangedCallback(IPAddressChanged))); *。當我刪除「0.0.0.0」,一切都開始工作。感謝您抽出寶貴時間看看並幫助我! – Scott 2011-05-16 22:34:25