0

在下面的例子SelectedValueTabControl总是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 回答