2009-06-16 4 views
0

Im folgenden Beispiel ist SelectedValue von TabControl immer null. Warum?WPF: SelectedValue immer 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> 

Antwort

2

Wie micahtan in einem weist darauf hin, Kommentar, SelectedValue aktualisiert, wenn Sie Tabs wechseln. Das bedeutet, dass TabControl die Eigenschaften in SelectedValuePath nicht auf Änderungen überwacht, sondern nur jedes Mal abfragt, wenn sich ihre SelectedItem ändert.

0

nicht sicher, was Ihr zu tun versuchen, aber:

Unter der Annahme, dass Sie den Namen des ausgewählten TabItem im Textblock zeigen wollen, ist es, weil Ihr SelectedValuePath falsch ist. Versuchen Sie, Ihre TabControl-Tags geändert zu:

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

Unter der Annahme, dass Sie versuchen, die Zeichenfolge Inhalt innerhalb des Listview zu bekommen, versuchen Sie Ihr TextBox zu ändern Bindung an:

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

Ich klärte meine Frage. – CannibalSmith

+0

Sie sollten in der Lage sein, eines der von mir bereitgestellten Snippets zu verwenden, um zu erhalten, was Sie wollen. Soweit SelectedValue auf null auswertet, ist dies nicht der Fall. Versuchen Sie, eine der Zeichenfolgen in Tab Eins oder Zwei auszuwählen, und ändern Sie die Tabulatoren dann hin und her. Ich gehe davon aus, dass es aufgrund des Bindungsmechanismus von SelectedValue nicht aktualisiert wird (z. B. wird es nicht auf dieselbe Weise wie Path neu bewertet). – micahtan