2010-07-30 36 views
7

Có thể bind a property to an existing application setting using the designer, cách mà tôi không cần phải viết một cái gì đó giống nhưTự động cập nhật Setting ứng dụng sử dụng các ràng buộc từ VS.Net thiết kế

textBox.Text = Settings.Default.Name; 

khi khởi tạo hình thức của tôi.

Bây giờ có vẻ như liên kết dừng ở đó, tức là nếu tôi thay đổi giá trị của cài đặt, nó sẽ không cập nhật giá trị trong hộp văn bản của tôi và ngược lại.

Có bình thường hay tôi thiếu gì đó không?

Trả lời

11

Tôi sẽ giải thích cách tôi làm điều đó trên các cửa sổ biểu mẫu với Visual Studio 2010. Có khả năng tương tự trong các phiên bản mới hơn.

  1. Click vào phần để ràng buộc (textbox, checkbox, ...)
  2. Make thành phần của bảng thuộc tính có thể nhìn thấy
  3. Mở rộng nút ApplicationSettings
  4. Nhấp vào nút ... bên phải (PropertyBinding)

    Get application settings for component

  5. Chọn whi ch thiết lập bạn muốn kiểm soát ràng buộc.

Có một hướng dẫn chi tiết hơn tại Exploring Secrets of Persistent Application Settings

+1

Làm cách nào để lưu, tôi thấy rằng nếu tôi cập nhật hộp văn bản và đóng ứng dụng của mình khi mở lại, giá trị cũ vẫn còn ở đó? – Zapnologica

+1

Tôi đã thử nghiệm rằng đóng ứng dụng bằng cách sử dụng nút gỡ lỗi dừng cài đặt người dùng không được lưu. Bạn nên đóng ứng dụng chính xác (nút chữ thập đỏ). –

+0

Có mã nào tôi có thể gọi theo cách thủ công để duy trì cài đặt không? Ví dụ về văn bản Người nghe đã thay đổi? hoặc cứ 10 giây một lần? – Zapnologica

1

Vâng, điều đó phụ thuộc.

Trước tiên, tôi không chắc chắn nếu bạn đang nói WPF hoặc Windows Forms, vì vậy tôi sẽ giả định không.

Thứ hai, bạn không "ràng buộc" bất cứ điều gì. Bạn đang sử dụng giá trị Name và đặt thuộc tính Text bằng giá trị này. Bạn đang đặt thuộc tính. Điều này không đi kèm với bất kỳ tác dụng phụ ma thuật nào liên kết chặt chẽ tài sản Name với thuộc tính Text.

Thứ ba, bạn có thể thay đổi cài đặt, nhưng cho đến khi bạn lưu chúng, chúng không được viết lại cho ứng dụng của bạn.config. Trong một ứng dụng Windows Forms, bạn sẽ phải làm một cái gì đó như thế này:

// event handler for the Form.Closed event. 
// this.FormClosed += FormClosed; 
void FormClosed(object sender, FormClosedEventArgs e) 
{ 
    Settings.Default.Name = textBox.Text; 
    Settings.Default.Save(); 
} 

Trong WPF, bạn muốn sử dụng ngữ nghĩa ràng buộc thông thường (có nghĩa là bạn tránh những rắc rối của việc thiết tất cả các giá trị tài sản khi kết thúc) , nhưng bạn vẫn phải bẫy cho biểu mẫu đóng để bạn có thể Lưu() cài đặt.

Binding:

<TextBox 
    xmlns:lol="clr-namespace:MyApplication.Settings" 
    Text="{Binding Name, Source={x:Static lol:Default}}" /> 

Save() gọi xảy ra nhiều như với ví dụ hình thức, nhưng bạn không cần phải làm bất cứ điều gì khác hơn gọi Save().

+0

Có một sự hiểu lầm ở đây. Tôi * không * viết "textBox.Text = Settings.Default.Name;" nhờ sự ràng buộc (xem liên kết). Tôi biết rằng nếu tôi muốn các thay đổi được lưu vào tệp cài đặt, tôi phải gọi cụ thể là "Settings.Default.Save();". – user276648

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