Bạn cần phải:
- 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ị
- 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ổ
- Hiển thị hộp thoại của bạn Cửa sổ làm hộp thoại khi cần
- (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.
Đ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