如何在DataContext
申请中的设计时确定特定控件的WPF
DataContext
可能在XAML
中专门设置,在代码中继承或设置,有时在设计时很难弄清楚绑定所指的类。
我通常尝试查找DataContext
类的是在VS中搜索绑定名称。例如,我看到绑定类似于
ItemSource = {Binding Items}
...我将搜索文本“Items”以便进入课堂,但VS有时无法找到搜索到的文本(我在解决方案中有几个项目)。
答案 0 :(得分:2)
我想在StepUp的列表中添加一种方法:
设计实例:
就像您可以定义运行时数据上下文一样,您可以通过以下方式添加专门用于设计时的数据上下文:
<Usercontrol x:Class="MyUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewModels="clr-namespace:MyProject.ViewModels"
d:DataContext="{d:DesignInstance viewModels:MyViewModel}"
d:DesignHeight="300"
d:DesignWidth="600"
mc:Ignorable="d">
</UserControl>
在Visual Studio中,您可以将IntelliSense用于可绑定属性,如果您的视图模型具有简单甚至无参数构造函数,则它将在Designer中创建,您无需启动应用程序即可测试触发器或转换器。
答案 1 :(得分:1)
<body onbeforeunload="return ask()">
<h1>onbeforeunload Test</h1>
<a href="http://www.google.de">Google</a>
</body>
的{p> DataContext
为Control
。因此,有ViewModel
ViewModel
DataContext
设置View
的方法很多,如果找到ViewModel
,但Items
中没有ViewModel
属性那么这意味着你应该添加这样的属性来获得工作绑定。
此外,我建议您查看Debug->Windows->Output
窗口,您可以在其中查看绑定信息。那就是你可以知道绑定错误。
总而言之,我想说明如何将ViewModel
设置为DataContext
:
设置DataContext有很多种方法:
第一种方法。在视图中:
<Window.DataContext>
<local:MainWindowViewModel/>
</Window.DataContext>
第二种方法。您应该覆盖OnStartUp()
的{{1}}方法
App.xaml.cs
第三种方法。在Windows的构造函数中:
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
MainWindow app = new MainWindow();
ProductViewModel context = new ProductViewModel();
app.DataContext = context;
app.Show();
}
}
第四种方法。您可以通过public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext=new MainWindowViewModel();
}
}
或其他IoC容器将DataContext
设置为DependencyInjection
。但是UnityContainer
,DependencyInjection
和Prism
是其他问题,并且来自问题的这个范围。仅举例:
UnityContainer