1
在我使用自定義用戶控件之前,我使用了一個標準的textxbox,其文本屬性綁定到列表框中所選項目的屬性。綁定也使用驗證規則。在這個屬性設置後,文本更改事件在xaml中被觸發,並且一切正常。訪問依賴項屬性設置器之前調用用戶控件的TextChanged事件
現在我已經改變它使用包含文本框的用戶控件。我向我的用戶控件添加了一個依賴項屬性,該屬性綁定到文本框的文本屬性。現在,事件在驗證發生之前更改文本時觸發。直到我的對話框中的某個複選框被綁定到同一項目的另一個屬性時,驗證纔會發生。在我的模型視圖中,set方法的斷點除了在列表框中的初始選擇之外不再被破壞,然而當我單擊文本框後,該值正在更新,因爲我看到了該效果。直到複選框被點擊,驗證所顯示的錯誤消息纔會出現。
的XAML在我窗口的用戶控件:
<my:BoundTextBox x:Name="spacingValueBox" TextBoxBase.TextChanged="spacingValueBox_TextChanged">
<my:BoundTextBox.Text>
<Binding Path="SelectedItem.Property" UpdateSourceTrigger="PropertyChanged" Mode="TwoWay">
<Binding.ValidationRules>
<validators:ValidationRule ErrorMessage="Invalid"/>
</Binding.ValidationRules>
</Binding>
</my:BoundTextBox.Text>
綁定到XAML我的用戶控件的Text屬性:
<UserControl x:Class="ButtonTextBox" ...
... Name="control">
<TextBox Text="{Binding Text, ElementName=control}"/>
依賴屬性:
public static readonly DependencyProperty TextProperty =
TextBox.TextProperty.AddOwner(typeof(BoundTextBox));
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
我看到你必須在依賴屬性上註冊事件。但是,我似乎無法做到這一點,並將我的控制權添加到文本屬性的欠款人? – DanBrum