2015-10-02 1 views
1

ControlTemplate берется из Microsoft's websiteсодержимое WPF TabItem не читается программой чтения с экрана, когда пользовательские ControlTemplate применяется к TabControl

<Window.Resources> 
    <ControlTemplate x:Key="TabTemplate" TargetType="TabControl"> 
     <Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="*"/> 
      </Grid.RowDefinitions> 
      <Border BorderThickness="0,0,1,1" BorderBrush="#D0CEBF" Grid.Row="1"> 
       <Border BorderThickness="{TemplateBinding BorderThickness}" 
         BorderBrush="{TemplateBinding BorderBrush}"> 
        <Border Background="{TemplateBinding Background}"> 
         <ContentPresenter ContentSource="SelectedContent"/> 
        </Border> 
       </Border> 
      </Border> 
      <TabPanel Grid.Row="0" IsItemsHost="true"/> 
     </Grid> 
    </ControlTemplate> 
</Window.Resources> 
<TabControl x:Key="TabTemplate"> 
    <TabItem Header="Header"> 
     <TextBlock Focusable="True" Text="Some text"/> 
    </TabItem> 
</TabControl> 

Если удалить x:Key="TabTemplate" из TabControl чтения с экрана считывает содержимое.

Должен ли я добавить что-то в ControlTemplate, чтобы сделать его доступным для чтения с экрана?

+0

* Если я удаляю x: Key = «TabTemplate» из программы чтения планшетов TabControl читает содержимое * - это, похоже, противоречит заголовку вопроса, удаление «x: Key =» TabTemplate «на самом деле будет применять пользовательский шаблон к вашему' TabControl', то, как говорится в заголовке вопроса, программа чтения с экрана *** не может *** читать содержимое, а вы сказали, что читатель экрана читает содержимое *. – Hopeless

+0

Извините, вы правы, я забыл добавить 'x: Key =" TabTemplate ". Я исправил код примера. –

ответ

0
<ControlTemplate x:Key="TabTemplate" TargetType="TabControl"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
     <Border BorderThickness="0,0,1,1" BorderBrush="#D0CEBF" Grid.Row="1"> 
      <Border BorderThickness="{TemplateBinding BorderThickness}" 
        BorderBrush="{TemplateBinding BorderBrush}"> 
       <Border Background="{TemplateBinding Background}"> 
        <ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent"/> 
       </Border> 
      </Border> 
     </Border> 
     <TabPanel Grid.Row="0" IsItemsHost="true"/> 
    </Grid> 
</ControlTemplate> 

Хитрость является x:Name собственностью ContentPresenter. Это должно быть точно PART_SelectedContentHost для чтения с экрана, чтобы вести себя правильно.

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