2013-03-18 34 views
5

Hiện nay tôi liên kết với TextBox es của tôi như:Textbox Binding cho cả LostFoucus và tài sản Cập nhật

Text="{Binding DocValue, 
     Mode=TwoWay, 
     ValidatesOnDataErrors=True, 
     UpdateSourceTrigger=PropertyChanged}" 

này hoạt động tuyệt vời trong việc mỗi tổ hợp phím để làm tình trạng nút kiểm tra (mà tôi muốn).

Ngoài ra, tôi muốn theo dõi sự kiện LostFocus trên TextBox (thông qua ràng buộc) và thực hiện một số tính toán bổ sung có thể quá chuyên sâu cho mỗi lần nhấn phím.

Mọi người đều có suy nghĩ về cách thực hiện cả hai?

+0

bạn có thể sử dụng sự kiện 'TextBox.OnLostFocus' –

+0

Tôi nghĩ anh ấy muốn liên kết thuộc tính với LostFocus, điều tôi không biết nếu điều này có thể được thực hiện –

+0

Vâng cách để ViewModel của tôi thực hiện một số phép tính trên LostFocus cùng với việc giữ thuộc tính được cập nhật khi chúng gõ. Hãy thử và xem tôi sẽ nhận được bao nhiêu thời gian trễ nếu tôi tính toán khi họ nhập .. có thể trông xấu khi các số khác thay đổi dựa trên những gì họ nhập. – adondero

Trả lời

1

Tôi nghĩ mình đã tìm được giải pháp ... Tôi đã tạo một lệnh tổng hợp và sử dụng lệnh đó cho giao tiếp bổ sung.

định nghĩa lệnh

public static CompositeCommand TextBoxLostFocusCommand = new CompositeCommand(); 

textbox My

private void TextboxNumeric_LostFocus(object sender, RoutedEventArgs e) 
{ 
    if (Commands.TextBoxLostFocusCommand.RegisteredCommands.Count > 0) 
    { 
     Commands.TextBoxLostFocusCommand.Execute(null); 
    } 
} 

sau đó trong ViewModel của tôi, tôi tạo ra một lệnh đại biểu và dây để nó ..

Nó có vẻ như nó đang làm việc, kỳ diệu nếu có cách nào tốt hơn. Một sự sụp đổ cho điều này là mỗi Textbox sẽ cháy này, không chỉ các mục của tôi được gắn vào công thức mà tôi muốn tính toán. Có thể cần phải suy nghĩ về cách để cải thiện điều này.

+0

Bạn có thể thêm hành vi lệnh vào hộp văn bản. Và chỉ đính kèm vào hộp văn bản yêu cầu hành vi đó. – TYY

+0

Tôi đã thêm thuộc tính ràng buộc tùy chỉnh vào hộp văn bản của mình được đặt khi tôi muốn hành vi này bật (tắt theo mặc định). Dường như đang làm việc – adondero

+0

Rất vui khi được giúp đỡ. – TYY

18

Liên kết lệnh với sự kiện TextBoxLostFocus.

XAML

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 

<TextBox Margin="0,287,0,0"> 
    <i:Interaction.Triggers> 
      <i:EventTrigger EventName="LostFocus"> 
       <i:InvokeCommandAction Command="{Binding LostFocusCommand}" /> 
      </i:EventTrigger> 
    </i:Interaction.Triggers> 
</TextBox> 

Xem Mẫu

private ICommand lostFocusCommand; 

public ICommand LostFocusCommand 
{ 
    get 
    { 
     if (lostFocusCommand== null) 
     { 
      lostFocusCommand= new RelayCommand(param => this.LostTextBoxFocus(), null); 
     } 
     return lostFocusCommand; 
    } 
} 

private void LostTextBoxFocus() 
{ 
    // do your implementation    
} 

bạn phải tham khảo System.Windows.Interactiviy cho việc này. Và bạn phải cài đặt một redistributable để sử dụng thư viện này. bạn có thể tải xuống từ here

Các vấn đề liên quan