我有一个用户控件,用于编辑我的应用程序中的一些对象。
最近遇到了这样的情况:我想弹出一个新的对话框(窗口),该窗口将托管此用户控件。
如何实例化新窗口并将需要从窗口设置到用户控件的任何属性传递?
感谢您的时间。
我有一个用户控件,用于编辑我的应用程序中的一些对象。
最近遇到了这样的情况:我想弹出一个新的对话框(窗口),该窗口将托管此用户控件。
如何实例化新窗口并将需要从窗口设置到用户控件的任何属性传递?
感谢您的时间。
您可以将新窗口的内容设置为用户控件。在代码中,这将类似于:
...
MyUserControl userControl = new MyUserControl();
//... set up bindings, etc (probably set up in user control xaml) ...
Window newWindow = new Window();
newWindow.Content = userControl;
newWindow.Show();
...
var myUserControlDialog d = new MyUserControlDialog();
d.NeededValueOne = "hurr";
d.NeededValueTwo = "durr";
d.ShowDialog();
以及源代码
public class MyUserControlDialog : Window
{
// you need to create these as DependencyProperties
public string NeededValueOne {get;set;}
public string NeededValueTwo {get;set;}
}
还有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>
在您的UserControl中,您将执行与窗口相同的操作,以创建公共属性,然后在xaml中绑定它们。