我有一个名为ProductEditView的UserControl,我将其添加到MainWindow(shell)的某个区域。我在Shell区域有一个TabControl来显示ProductEditView,如下所示
<TabControl Name="tabEditProduct"
prism:RegionManager.RegionName="TabContent"
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<DockPanel LastChildFill="True" >
<Button Width="16" Height="16" Command="{Binding Path=CloseTabCommand}"
DockPanel.Dock="Right" BorderThickness="0" Padding="0"
BorderBrush="Transparent" Background="Transparent">
<Image Source="Images/close-icon.png" Width="14" Height="14"
HorizontalAlignment="Stretch" Margin="0"/>
</Button>
<TextBlock Text="{Binding ProductName}"
DockPanel.Dock="Left" Margin="0,0,10,0" />
</DockPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
在TabItem的HeaderTemplate中,我试图使用绑定显示Product Object中的文本。不幸的是绑定不起作用,但我可以将静态文本显示为标题。 是否可以使用上述绑定显示标签项的标题文本?
为了完整性,我还将视图粘贴到EditControl区域中以TabItem加载的Edit Product。这种绑定运作良好。这是ProductEditView
<UserControl x:Class="TextExisting.CoreModule.ProductEditView"
....
<Grid HorizontalAlignment="Center" DataContext="{Binding Path=Product}" Grid.Row="0" Grid.Column="0">
....
<TextBlock Text="Id" Grid.Row="0" Grid.Column="0"/>
<TextBox Grid.Row="0" Grid.Column="1"
Text="{Binding Path=Id, NotifyOnValidationError=True, ValidatesOnExceptions=True}" />
<TextBlock Text="Product Name" Grid.Row="1" Grid.Column="0"/>
<TextBox Grid.Row="1" Grid.Column="1"
Text="{Binding Path=ProductName, NotifyOnValidationError=True, ValidatesOnExceptions=True}" />
....
</Grid>
<Button Command="{Binding SaveProductCommand}" Content="Save Product" HorizontalAlignment="Center"/>
</UserControl>
答案 0 :(得分:0)
也许添加这样的东西
"{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}, Mode=FindAncestor}, Path=DataContext.ProductName}"
这将向上移动并找到usercontrol的datacontext,它带有绑定到视图模型及其属性。
这是一个使用WPF Cheat Sheet
的小作弊表答案 1 :(得分:-1)
Here是解释如何在此方案中进行绑定的链接。