призма - Невозможно установить привязку для HeaderTemplate TabItem - PullRequest
0 голосов
/ 21 марта 2012

У меня есть UserControl с именем ProductEditView, который я добавляю в область моего MainWindow (оболочки).У меня есть TabControl в области Shell для отображения 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>

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

Для полноты я также вставляю представление для редактирования продукта, загружаемого в область 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>

Ответы [ 2 ]

0 голосов
/ 23 марта 2012

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

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

Вот небольшая шпаргалка, которую я использую Шпаргалка WPF

0 голосов
/ 22 марта 2012

Здесь - ссылка, объясняющая, как связывать в этом сценарии.

...