2009-06-16 3 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"> 

:에있는 TabControl 태그를 변경해보십시오 탭을 전환하면 SelectedValue이 업데이트됩니다. 즉, TabControl은 변경 내용이있는 SelectedValuePath의 속성을 모니터링하지 않으므로 SelectedItem이 변경 될 때마다 폴링합니다.

0

은 당신의 일을하려고,하지만 확실하지 : 당신의 SelectedValuePath가 올바르지 않아

가 선택한 TabItem의 이름이 TextBlock의 표시하려는 가정이 있습니다. micahtan가에서 지적 하듯이

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

나는 내 질문을 명확히했다. – CannibalSmith

+0

내가 원하는 내용을 얻으려면 제공된 스 니펫 중 하나를 사용해야합니다. null로 평가 한 SelectedValue까지는 그렇지 않습니다. 탭 1 또는 2에서 문자열 중 하나를 선택하고 탭을 앞뒤로 변경하십시오. SelectedValue 바인딩 메커니즘으로 인해 업데이트되지 않는다고 가정합니다 (예 : Path와 동일한 방식으로 다시 평가하지 않음). – micahtan

관련 문제