none
wpf的tabcontrol绑定数据变化不显示 RRS feed

  • 问题

  • <Page x:Class="test.ConsolePage"
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
          xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
          mc:Ignorable="d" 
          d:DesignHeight="300" d:DesignWidth="300"
          xmlns:local="clr-namespace:test"
    	Title="ConsolePage">
        <Page.Resources>
            <local:IntIsTitleVisibleToVisible x:Key="intIsTitleVisibleToVisible"/>
        </Page.Resources>
            <Grid>
            <TabControl Name="tabControl">
                <TabControl.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding SubFunctionName}"/>
                    </DataTemplate>
                </TabControl.ItemTemplate>
                <TabControl.ContentTemplate>
                    <DataTemplate>
                        <Grid Background="WhiteSmoke">
                            <Grid Grid.Row="0" Visibility="{Binding IsTitleVisible,Converter={StaticResource intIsTitleVisibleToVisible}}"
                                  MouseLeftButtonDown="TextBlock_MouseLeftButtonDown"
                                  Tag="{Binding SubFunctionName}">
                                <TextBlock  Background="Transparent" FontSize="20" HorizontalAlignment="Center" Text="{Binding SubFunctionName}" />
                            </Grid>
                    </DataTemplate>
                </TabControl.ContentTemplate>
            </TabControl>
        </Grid>
    </Page>
            private void TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                for (int i = 0; i < subFunctionDetailLists.Count; i++)
                {
                    if (((Grid)sender).Tag.ToString() == subFunctionDetailLists[i].SubFunctionName)
                        subFunctionDetailLists[i].IsTitleVisible=0;
                }
            }

    就是当我点击tabitem的grid时,会触发isTitleVisible的值变为0,然后isTitleVisible是和这个grid的是否显示绑定的。

    subFunctionDetailLists是一个实现ObservableCollection<SubFunctionDetail>接口的类。

    现在我发现,当我点击了grid后,没有变化发生,这个时候如果有2个或多个tabitem存在的时候,我切换的tabitem,再切回来就发现grid隐藏了,或者说数据变化反应出来了(如果不切换tabitem就不显示变化)。

    我怀疑是选中的tabitem是不是有些特殊的属性,造成数据变化不显示。求教。


    • 已编辑 cuso4sean 2013年2月22日 7:40 单词拼错了
    2013年2月22日 7:38

答案