我正在使用Visual Studio并使用C#来实现功能,使用XAML来实现GUI。尽管我已经理解了命令InitializeComponent()调用XAML并像往常一样从上到下构建元素。 使用不同的选项卡(TabControl)我想询问是否可以仅在选择选项卡时加载元素,使程序启动更快,并且不必要的元素(以及像预选的Radiobutton这样的函数)不会被使用。需要加载。
whoami<TypeParam::firstType> info;
info.tellme();
答案 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是你的标签。