2009-06-16 1 views
0

В следующем примере SelectedValue of TabControl всегда null. Зачем?WPF: SelectedValue всегда null

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib"> 
<DockPanel> 
    <TextBlock Text="{Binding SelectedValue, ElementName=Tabs}" DockPanel.Dock="Bottom"/> 
    <TabControl x:Name="Tabs" SelectedValuePath="Content.SelectedItem"> 
     <TabItem Header="TabOne"> 
      <ListView> 
       <ListView.View> 
        <GridView> 
         <GridViewColumn/> 
        </GridView> 
       </ListView.View> 
       <s:String>ItemOne</s:String> 
       <s:String>ItemTwo</s:String> 
      </ListView> 
     </TabItem> 
     <TabItem Header="TabTwo"> 
      <ListView> 
       <ListView.View> 
        <GridView> 
         <GridViewColumn/> 
        </GridView> 
       </ListView.View> 
       <s:String>ItemOne</s:String> 
       <s:String>ItemTwo</s:String> 
      </ListView> 
     </TabItem> 
    </TabControl> 
</DockPanel> 
</Window> 

ответ

2

Как micahtan указывает в комментарий, SelectedValue обновляется при переключении вкладок. Это означает, что TabControl не контролирует свойства в SelectedValuePath для внесения изменений, только опроса их каждый раз, когда изменяется его SelectedItem.

0

Не уверен, что вы пытаетесь сделать, но:

Предполагая, что вы хотите, чтобы имя выбранного TabItem, чтобы показать в TextBlock, это потому, что ваш SelectedValuePath неправильно. Попробуйте изменить TabControl тег:

<TabControl x:Name="Tabs" SelectedValuePath="Header"> 

Предполагая, что вы пытаетесь получить содержимое строки внутри в ListView, попробуйте изменить TextBox привязка к:

<TextBlock Text="{Binding SelectedItem.Content.SelectedItem, ElementName=Tabs}" DockPanel.Dock="Bottom"/> 
+0

Я уточнил свой вопрос. – CannibalSmith

+0

Вы должны быть в состоянии использовать любой из фрагментов, которые я предоставил, чтобы получить то, что вы хотите. Поскольку SelectedValue оценивает значение null, это не так. Попробуйте выбрать одну из строк в Tab One или Two, затем измените вкладки назад и вперед. Я предполагаю, что он не обновляется из-за механизма привязки SelectedValue (например, он не переоценивает тот же путь, что и Path). – micahtan