2010-02-05 37 views
7

Tôi có một usercontrol mà tôi sử dụng để chỉnh sửa một số đối tượng trong ứng dụng của tôi.WPF cửa sổ lưu trữ usercontrol

Gần đây tôi đã đến một trường hợp mà tôi muốn bật lên một hộp thoại mới (cửa sổ) sẽ lưu trữ điều khiển người dùng này.

Làm cách nào để tạo nhanh cửa sổ mới và chuyển bất kỳ thuộc tính nào cần được đặt từ cửa sổ sang điều khiển người dùng?

Cảm ơn thời gian của bạn.

+0

Điều khiển người dùng của bạn có thường liên kết với các đối tượng bạn đang chỉnh sửa không? Thông tin thêm có thể hữu ích. Theo như các tùy chọn cho một instantiating trong một cửa sổ mới ... bạn có thể thử một popup hoặc một cửa sổ mới có usercontrol của bạn như một đứa trẻ và chỉ cần gọi phương thức .Show() sau khi bạn thiết lập các thuộc tính hoặc ràng buộc các giá trị của với những gì bạn đang chỉnh sửa. – Scott

Trả lời

14

Bạn chỉ cần đặt nội dung của cửa sổ mới của mình thành điều khiển người dùng. Trong mã, đây sẽ là một cái gì đó như thế này:

... 

MyUserControl userControl = new MyUserControl(); 

//... set up bindings, etc (probably set up in user control xaml) ... 

Window newWindow = new Window(); 
newWindow.Content = userControl; 
newWindow.Show(); 

... 
+2

Tôi thích nó khi nó đơn giản và dễ hiểu –

1

Bạn cần phải:

  1. Tạo một số tài sản công cộng trên Window thoại của bạn để vượt qua trong các giá trị
  2. Bind UserControl của bạn đối với những tài sản công cộng trong hộp thoại của bạn Cửa sổ
  3. Hiển thị hộp thoại của bạn Cửa sổ làm hộp thoại khi cần
  4. (tùy chọn) truy xuất các giá trị từ cửa sổ được ràng buộc hai chiều với điều khiển người dùng của bạn

Dưới đây là một số giả trông rõ rệt như C# và XAML:

Làm thế nào để hiển thị một cửa sổ như một hộp thoại:

var myUserControlDialog d = new MyUserControlDialog(); 
d.NeededValueOne = "hurr"; 
d.NeededValueTwo = "durr"; 
d.ShowDialog(); 

và nguồn

public class MyUserControlDialog : Window 
{ 
    // you need to create these as DependencyProperties 
    public string NeededValueOne {get;set;} 
    public string NeededValueTwo {get;set;} 
} 

và XAML

<Window x:Class="MyUserControlDialog" xmlns:user="MyAssembly.UserControls"> 
<!-- ... --> 
    <user:MyUserControl 
    NeededValueOne="{Binding NeededValueOne, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}" 
    NeededValueTwo="{Binding NeededValueTwo, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}" 
</Window> 

bạn sẽ làm điều tương tự trong UserControl của mình như bạn đã thực hiện trong cửa sổ để tạo các thuộc tính công khai và sau đó liên kết với chúng trong xaml.

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