我试图将一些数据从MainWindow
绑定到第二个文件(类型:UserControl
)。第二个xaml文件应该包含来自TabItem
的数据。 我发现这个答案:wpf : Bind to a control in another xaml file 但不知何故,我没有得到它,也许是因为我是新来的wpf和xaml。wpf绑定到另一个xaml文件中的元素
我做了一个简单的例子,以示我的问题:
主窗口:
<Window x:Class="BindingBetweenFiles.MainWindow"
...
xmlns:local="clr-namespace:BindingBetweenFiles"
Title="MainWindow" Height="350" Width="525">
<StackPanel>
<TabControl Height="200">
<TabItem Header="Tab 1">
<local:Tab1 />
</TabItem>
</TabControl>
<TextBlock Name="txtblock1">This text should be shown in the tab.</TextBlock>
</StackPanel>
</Window>
TAB1(内容的TabItem):
<UserControl x:Class="BindingBetweenFiles.Tab1"
...
xmlns:local="clr-namespace:BindingBetweenFiles"
mc:Ignorable="d"
DataContext="local:MainWindow"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Label Content="{Binding DataContext.txtblock1.Text, RelativeSource={
RelativeSource AncestorType={x:Type local:MainWindow}}}"/>
</Grid>
我不知道DataContext
的声明是错误的,或者如果绑定是问题?
我真的很感谢您能提供任何帮助。
是不是更好地使用MVVM模式?仅将xaml文件用作表示形式,并将所有实际数据存储在单独的ViewModel类中。然后,您的MainWindow和UserControl都可以绑定到ViewModel的相同属性,并将其作为DataContext使用。 – lentinant