我有这个约束力:
<Window x:Name="_local">
<TextBox x:Name="txtVendorName" DataContext="{Binding ElementName=_this, Path=VendorObject}" Width="200" Height="50" BorderBrush="Black" Text="{Binding Path=VendorName}" />
如果我有50个文本框和标签需要绑定,我是否需要为所有人设置DataContext?
有没有办法可以集中这个DataContext,只为我的对象定义文本/内容?
我不想将DatContext定义到我的网格。那么如何在我的?
中定义DataContext<Window.Resources></Window.Resources>
答案 0 :(得分:0)
如果我正确猜测您的实际要求,那么您想要的是所有50个标签和文本块应绑定到VendorObject
来自_this
对象的数据上下文。虽然我无法猜出_this
对象是什么。
好DataContext
是一个Inherited Dependency Property (IDP)
他们的意思是当一个可视父级用数据上下文设置时,它的数据上下文被那个视觉下面的所有孩子获得。
因此,如果您在窗口中放置一些Panel
并使用绑定DataContext="{Binding ElementName=_this, Path=VendorObject}"
设置其数据上下文一次,然后将所有这些50-100个文本块和标签放在该面板下,那么它们将自动获取vendor-object作为数据上下文。
所以
<StackPanel DataContext="{Binding ElementName=_this, Path=VendorObject}">
<TextBlock Text="{Binding Path=VendorName}" />
<TextBlock Text="{Binding Path=VendorId}" />
<TextBlock Text="{Binding Path=VendorLocation}" />
.... <!--Put all the 50 UI items here to use same data context -->
</StackPanel>
我希望我猜对了你需要的东西。
现在回答你的下一个问题,
那么如何在我的
中定义DataContext<Window.Resources></Window.Resources>
VendorObject
类的实例并给它一个资源Key
,但这只是一个糟糕的设计。