0

次の例SelectedValueでは、 TabControlis 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>
4

2 に答える 2

2

micahtan がコメントで指摘しているように、SelectedValueタブを切り替えると更新されます。これは、TabControlがプロパティの変更を監視せずSelectedValuePath、変更のたびにプロパティをポーリングするだけであることを意味しSelectedItemます。

于 2009-06-16T16:30:04.363 に答える
0

何をしようとしているのかわかりませんが、

選択した TabItem の名前を TextBlock に表示する必要があると仮定すると、SelectedValuePath が正しくないためです。TabControl タグを次のように変更してみてください。

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

ListView 内の文字列コンテンツを取得しようとしていると仮定して、TextBox バインディングを次のように変更してみてください。

<TextBlock Text="{Binding SelectedItem.Content.SelectedItem, ElementName=Tabs}" DockPanel.Dock="Bottom"/>
于 2009-06-16T15:29:48.223 に答える