2009-06-16 7 views
0

Dans l'exemple suivant SelectedValue de TabControl est toujours null. Pourquoi?WPF: SelectedValue toujours 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> 

Répondre

2

Comme micahtan souligne dans un comment, SelectedValue met à jour lorsque vous changez d'onglet. Cela signifie que TabControl ne surveille pas les propriétés dans SelectedValuePath pour les modifications, les interroge uniquement à chaque modification SelectedItem.

0

Je ne sais pas ce que vous essayez de faire, mais:

En supposant que vous voulez que le nom du TabItem sélectionné pour apparaître dans le TextBlock, il est parce que votre SelectedValuePath est incorrect. Essayez de changer votre tag TabControl:

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

En supposant que vous essayez d'obtenir le contenu de la chaîne à l'intérieur de ListView, essayez de changer votre textbox à:

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

J'ai clarifié ma question. – CannibalSmith

+0

Vous devriez être en mesure d'utiliser l'un des extraits que j'ai fournis pour obtenir ce que vous voulez. Tant que SelectedValue évalue à null, ce n'est pas le cas. Essayez de sélectionner l'une des chaînes dans l'onglet un ou deux, puis changez les onglets d'avant en arrière. Je suppose qu'il n'est pas mis à jour en raison du mécanisme de liaison de SelectedValue (par exemple, il ne réévalue pas de la même manière que Path). – micahtan

Questions connexes