2009-06-16 9 views
0

SelectedValueTabControlは、常にnullです。どうして?WPF:SelectedValue always 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

:あなたは、リストビューの中の文字列の内容を取得しようとしていると仮定すると、

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

、に結合するあなたのTextBoxを変更してみてくださいあなたがタブを切り替えると、SelectedValueのコメントが更新されます。これは、TabControlが変更のためにSelectedValuePathのプロパティを監視しないことを意味します。変更するたびに変更します。SelectedItem

0

は、あなたがやろうとしますが、わからない:あなたのSelectedValuePathが正しくないため、

は、あなたが選択したのTabItemの名前はTextBlock内に表示したいと仮定すると、それはです。あなたのTabControlのタグを変更してみてください:micahtanがで指摘するように

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

私は私の質問を明確にしました。 – CannibalSmith

+0

私が提供したスニペットのいずれかを使用して、必要なものを得ることができるはずです。 SelectedValueがnullに評価される限り、そうではありません。 Tab OneまたはTabのいずれかで文字列の1つを選択して、Tabを前後に変更してみてください。 SelectedValueのバインドメカニズム(たとえば、Pathと同じ方法を再評価しないなど)によって更新されていないと想定します。 – micahtan

関連する問題