仅在选择选项卡后加载项目

时间:2015-11-23 09:18:11

标签: c# xaml

我正在使用Visual Studio并使用C#来实现功能,使用XAML来实现GUI。尽管我已经理解了命令InitializeComponent()调用XAML并像往常一样从上到下构建元素。 使用不同的选项卡(TabControl)我想询问是否可以仅在选择选项卡时加载元素,使程序启动更快,并且不必要的元素(以及像预选的Radiobutton这样的函数)不会被使用。需要加载。

whoami<TypeParam::firstType> info;
info.tellme();

1 个答案:

答案 0 :(得分:0)

<TabItem x:Name="SecondTab" Header="Second Tab" > 
        <Grid Visibility = "{Binding ElementName=SecondTab,Path=IsSelected,CONVERTERHERE"/>
    </TabItem>

您应该将内容的可见性绑定到IsSelected属性。

编辑: 这里的问题是IsSelected是boolean,Visibility属性是Visibility类型。常见的WPF方法是创建从布尔到可见性的转换器:

 class BooleanToVisibilityConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value is Boolean && (bool)value)
            {
                return Visibility.Visible;
            }
            return Visibility.Collapsed;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value is Visibility && (Visibility)value == Visibility.Visible)
            {
                return true;
            }
            return false;
        }
    }

在资源中的某个位置将其声明为:

<Grid>
<Grid.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</Grid.Resources>
</Grid>

然后使用它:

<TabItem x:Name="SecondTab" Header="Second Tab" > 
        <Grid Visibility = "{Binding ElementName=SecondTab,Path=IsSelected,Converter={StaticResource BooleanToVisibilityConverter}}"/>
    </TabItem>

如果你有任何逻辑只有在选择了tab时才需要调用,那么你应该连接到SelectionChanged事件并调用必要的逻辑,如果选中的tab是你的标签。