2012-05-23 22 views
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); } 
} 
+0

我看到你必須在依賴屬性上註冊事件。但是,我似乎無法做到這一點,並將我的控制權添加到文本屬性的欠款人? – DanBrum

回答

0

該解決方案實際上非常簡單,我只需將UpdateSourceTrigger的值設置爲PropertyChanged即可。

相關問題