此对话框对我没有任何意义
http://img576.imageshack.us/img576/4223/50709706.gif
我很难找到关于它的好的教程。大多数示例都不够详细,或者是通过代码来完成的,但我希望尽可能多地利用IDE。
ItemsSource和DataContext之间的区别是什么
我只想把它绑定到初学者的列表中。我不需要SQL或数据库或任何花哨的东西。我应该在哪里声明我的列表?在MainWindow.xaml.cs?如何使其出现在该对话框中?
发布于 2010-05-06 09:00:22
可以将"DataContext“作为绑定中"Source”的默认值。
创建绑定时,可以指定路径和源,如下所示(我将以TextBox为例):
<TextBox Text="{Binding Path=Foo,Source={StaticResource Bar}}" />因此,我的TextBox.Text属性被绑定到一个名为Bar (应用程序中某处的资源)的对象上的Foo属性。
但是,如果您有一大堆东西要绑定到Bar上的属性,那么将Bar设置为父容器的DataContext会更容易一些。默认情况下,没有源的绑定将只使用DataContext,并且DataContext从父控件流向子控件。所以:
<StackPanel DataContext="{StaticResource Bar}">
<TextBox Text="{Binding Path=Foo}" />
<TextBox Text="{Binding Path=Fizz}" />
<TextBox Text="{Binding Path=Buzz}" />
</StackPanel>所有的TextBoxes仍然绑定到栏上的属性,但它们没有显式地将其设置为源。
让我们再看一看你发布的对话框。它为您提供了ItemsSource绑定的“源”的几个选项。当你选择" DataContext“时,你是在告诉Visual Studio,ItemsControl不需要知道源代码--它会从父容器(甚至可能是窗口本身)的DataContext中获取源代码。
如果您选择了其他选项之一(ElementName、RelativeSource或StaticResource),那么您将为该ItemsControl显式设置绑定的源。
一旦你告诉它绑定到DataContext,你需要进入对话框的“路径”部分,并告诉它绑定控件的项到哪个属性。最后,标记将如下所示(假设它是一个ListBox):
<ListBox ItemsSource="{Binding Path=Foos}" />因此,ListBox中的项来自名为"Foos“的属性,该属性位于逻辑树中较高位置(可能位于窗口本身)的DataContext中的某个对象上。
发布于 2010-05-06 09:16:16
您很少需要在控件外部使用控件的数据上下文。设置DataContext(DataContext = this;)的最常见用例是在UserControl的代码隐藏中,使UserControl中的所有控件都绑定到控件的属性。
当您使用ListBox时,设置ItemsSource就足够了,除非您正在做一些时髦的事情。
发布于 2010-05-06 14:28:46
这是一个非常好的演练:http://windowsclient.net/learn/video.aspx?v=315275
具体地说,您需要首先设置DataContext,告诉它在哪里查找ItemsSource。最简单的方法是通过XAML在窗口上设置:
<Window.DataContext>
<controllers:DownloadManager />
</Window.DataContext>https://stackoverflow.com/questions/2777450
复制相似问题