2012-03-21 2 views
0

У меня есть UserControl с именем ProductEditView, который я добавляю в область моего MainWindow (shell). У меня есть TabControl в Shell области для отображения ProductEditView, как показано нижеПризма - Невозможно установить привязку для HeaderTemplate из TabItem

<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> 

В HeaderTemplate в TabItem, я пытаюсь вывести текст из целевого продукта с помощью связывания. К сожалению, привязка не работает, но я могу отображать статический текст в виде заголовка. Можно ли отображать текст заголовка элемента табуляции, используя привязку, как указано выше?

Для полноты я также вставляю вид Редактировать продукт, который загружается в область TabControl как TabItem. Связки для этого хорошо работают. Вот 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

Here ссылка объясняет, как связать в этом сценарии.

+0

Вы ссылка сломана, и что именно по этой причине связь только ответы не приветствуются на переполнение стека (хотя, возможно, не так нежелательны, когда вы вывесили свой ответ). – Sheridan

+0

вот ссылка, и решение сработало для меня http://blog.vivekmehta.com/2011/06/referencing-viewmodel-datacontext-in-prism/ – dev27

0

Может быть, добавить что-то вроде этого "{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}, Mode=FindAncestor}, Path=DataContext.ProductName}"

это будет путешествовать и найти DataContext в UserControl, который несет привязку к вашей модели представления и его свойства.

Вот немного шпаргалку, что я использую WPF Cheat Sheet

Смежные вопросы