使用多个 Header 项和单个 PivotItem 进行透视
Pivot with multiple Header items and a single PivotItem
是否有可能用一个 PivotItem
和多个 headers 创建一个 Pivot
来创建一个效果,就像有多个 PivotItem
但只有一个显示。
所有数据透视表项都将是同一类型,并且有一个模板。
其中一个问题是当我的 Pivot
只包含一个项目时,枢轴变得不可滚动(不可滑动)。
我需要这样的行为来重用创建的视图并减少内存消耗。
我试过更改枢轴样式,但还没有成功。也许任何人都创造了类似的东西并且可以帮助我。
您可以创建多个 PivotItem
和一个内容。最初您的内容将在第一个 PivotItem
中。然后在 SelectionChanged
事件中,从之前的 PivotItem
中删除您的内容(设置它的内容 null
)并将其添加到当前选择的内容。
这是一个例子:
<phone:Pivot x:Name="myPivot" Title="MYPIVOT" SelectionChanged="Pivot_SelectionChanged">
<phone:PivotItem x:Name="one" Header="one">
<Grid x:Name="content">
<!-- Place content here -->
</Grid>
</phone:PivotItem>
<phone:PivotItem x:Name="two" Header="two" />
<phone:PivotItem x:Name="three" Header="three" />
</phone:Pivot>
下面是代码:
PivotItem selected;
public MainPage()
{
InitializeComponent();
selected = one;
}
private void Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
selected.Content = null;
switch(myPivot.SelectedIndex)
{
case 0:
one.Content = content;
selected = one;
break;
case 1:
two.Content = content;
selected = two;
break;
case 2:
three.Content = content;
selected = three;
break;
}
}
是否有可能用一个 PivotItem
和多个 headers 创建一个 Pivot
来创建一个效果,就像有多个 PivotItem
但只有一个显示。
所有数据透视表项都将是同一类型,并且有一个模板。
其中一个问题是当我的 Pivot
只包含一个项目时,枢轴变得不可滚动(不可滑动)。
我需要这样的行为来重用创建的视图并减少内存消耗。
我试过更改枢轴样式,但还没有成功。也许任何人都创造了类似的东西并且可以帮助我。
您可以创建多个 PivotItem
和一个内容。最初您的内容将在第一个 PivotItem
中。然后在 SelectionChanged
事件中,从之前的 PivotItem
中删除您的内容(设置它的内容 null
)并将其添加到当前选择的内容。
这是一个例子:
<phone:Pivot x:Name="myPivot" Title="MYPIVOT" SelectionChanged="Pivot_SelectionChanged">
<phone:PivotItem x:Name="one" Header="one">
<Grid x:Name="content">
<!-- Place content here -->
</Grid>
</phone:PivotItem>
<phone:PivotItem x:Name="two" Header="two" />
<phone:PivotItem x:Name="three" Header="three" />
</phone:Pivot>
下面是代码:
PivotItem selected;
public MainPage()
{
InitializeComponent();
selected = one;
}
private void Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
selected.Content = null;
switch(myPivot.SelectedIndex)
{
case 0:
one.Content = content;
selected = one;
break;
case 1:
two.Content = content;
selected = two;
break;
case 2:
three.Content = content;
selected = three;
break;
}
}