我需要使用Accordion在我们正在构建的LOB应用程序上显示一些总数。手风琴项目不正确视觉状态
如果我将手风琴置于XAML中,所有工作都正常,并且图标(>)的状态正确并指向右侧。在鼠标进入AccordionItem时,我们做了而不是有一个视觉状态变化。
如果我在Button Click上动态添加AccordionItems(模拟异步数据调用返回),图标的状态是不一样的,在MouseEnter上,它通过执行视觉状态更改来“纠正”自身。 *您可能需要点击两次“添加3个手风琴项目”。
如果我在Button上动态添加一个Accordion,点击AccordionItems就可以正常工作。以下是我的示例应用程序。
那么我需要做什么才能让Accordion在运行时添加AcordionItems,并且在使用XAML时处于正确的状态?
XAML
<Grid x:Name="LayoutRoot" Background="Black" >
<StackPanel x:Name="TheStackPanel">
<Button Content="Create Accordion" Click="CreateAccordionItems"></Button>
<Button Content="Add 3 Accordion Items" Click="AddAccordionItems"></Button>
<Grid Background="Pink">
<layoutToolkit:Accordion SelectionMode="ZeroOrMore" x:Name="TestAccordion" Margin="10,10,10,10" HorizontalAlignment="Stretch" >
<layoutToolkit:AccordionItem Content="Content - 1" Header="Header - 1">
</layoutToolkit:AccordionItem>
<layoutToolkit:AccordionItem Content="Content - 2" Header="Header - 2">
</layoutToolkit:AccordionItem>
<layoutToolkit:AccordionItem Content="Content - 3" Header="Header - 3">
</layoutToolkit:AccordionItem>
</layoutToolkit:Accordion>
</Grid>
</StackPanel>
public partial class MainPage : UserControl
{ 私人诠释计数= 0; public MainPage() { //需要初始化变量 InitializeComponent(); //TestAccordion.ExpandDirection = ExpandDirection.Down; }
private void AddAccordionItems(object sender, RoutedEventArgs e)
{
AddToAccordion(3, TestAccordion);
}
private void AddToAccordion(int size, Accordion _Accordion)
{
for(int i = 0; i < size; i++)
{
AccordionItem accordionItem = new AccordionItem();
accordionItem.Header = "Item " + count.ToString();
count++;
_Accordion.Items.Add(accordionItem);
Grid aGrid = new Grid();
TextBlock tb = new TextBlock();
tb.Text = accordionItem.Header as string;
aGrid.Children.Add(tb);
accordionItem.Content = aGrid;
//accordionItem.IsEnabled = true;
accordionItem.IsSelected = true;
}
}
private void CreateAccordionItems(object sender, RoutedEventArgs e)
{
Accordion accordion = new Accordion();
accordion.HorizontalContentAlignment = HorizontalAlignment.Stretch;
TheStackPanel.Children.Add(accordion);
AddToAccordion(10, accordion);
}
}
这似乎使它看起来很好。 – 2011-11-15 03:41:31