mpe*_*pen 3 wpf visual-studio-2010
这个对话对我来说毫无意义
http://img576.imageshack.us/img576/4223/50709706.gif
而且我很难找到合适的教程.大多数示例都不够详细,或通过代码执行,但我想尽可能利用IDE.
什么区别ItemsSource和DataContext?
我想将它绑定到一个列表中作为初学者.我不需要SQL或数据库或任何花哨的东西.我在哪里申报我的名单?在MainWindow.xaml.cs?如何让它出现在该对话框中?
将"DataContext"视为绑定中"Source"的默认值.
创建绑定时,可以指定路径和源,如下所示(我将使用TextBox作为示例):
<TextBox Text="{Binding Path=Foo,Source={StaticResource Bar}}" />
Run Code Online (Sandbox Code Playgroud)
所以我的TextBox.Text属性绑定到名为Bar的对象上的Foo属性(应用程序中的某个资源).
但是,如果要将大量事物绑定到Bar上的属性,则将Bar设置为父容器的DataContext会更容易.没有Source的绑定将默认使用DataContext,DataContext将从父级流向子控件.所以:
<StackPanel DataContext="{StaticResource Bar}">
<TextBox Text="{Binding Path=Foo}" />
<TextBox Text="{Binding Path=Fizz}" />
<TextBox Text="{Binding Path=Buzz}" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
所有TextBox仍然绑定到Bar上的属性,但是他们没有明确地将它设置为Source.
那么让我们再看看你发布的对话框.它为ItemsSource绑定的"源"提供了几个选项.当您选择"DataContext"时,您告诉Visual Studio ItemsControl不需要知道源 - 它将从父容器的DataContext(甚至可能是Window本身)中获取它.
如果您选择了其他选项之一(ElementName,RelativeSource或StaticResource),那么您将为该ItemsControl显式设置绑定的源.
一旦你告诉它它绑定到DataContext,你需要进入对话框的"Path"部分并告诉它将哪个属性绑定到控件的项目.最后,标记看起来像这样(假设它是一个ListBox):
<ListBox ItemsSource="{Binding Path=Foos}" />
Run Code Online (Sandbox Code Playgroud)
因此ListBox中的项来自名为"Foos"的属性,该属性位于逻辑树中较高位置的DataContext中设置的对象(可能在Window本身上).