动态地将控件添加到silveright StackPanel以创建菜单

时间:2009-09-30 07:02:55

标签: silverlight controls

你好社区任何人都可以说如何动态地将控件添加到堆栈面板

注意:我需要的是我必须创建一个菜单,从数据库中获取数据并相应地创建菜单项,任何人都可以说我如何创建这样的菜单我是银光的新手

我正在使用silverlight 3 beta和表达式blend3 + sketch flow请帮我知道如何设计那些

2 个答案:

答案 0 :(得分:4)

请原谅变量名称,但这里是一个动态添加项目到堆栈面板的代码片段

StackPanel split = new StackPanel();
TextBlock expected = new TextBlock();
expected.Text = "Expected Final Bonus";
TextBlock meh = new TextBlock();
meh.Text = Math.Round(((QuoteData)results.First()).ExpectedBonus * 100, 2) + "%";
split.Children.Add(expected);
split.Children.Add(meh);

TextBlock disc = new TextBlock();
disc.Text = "Discretionary Percentage";
TextBlock number = new TextBlock();
number.Text = Math.Round(((QuoteData)results.First()).Discretionary * 100, 2) + "%";

split.Children.Add(disc);
split.Children.Add(number);

在这里您可以看到我也动态创建了堆栈面板,但是,您也可以使用XAML创建它。

这样的事情应该有效:

<StackPanel Grid.Row="3" Grid.Column="1" Name="split" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto">

答案 1 :(得分:0)

首先,如果您的StackPanel已经在您的XAML中,请处理Loaded事件:

<StackPanel x:Name="spValue" Loaded="spValue_Loaded">
</StackPanel>

private void spValue_Loaded(object sender, RoutedEventArgs e)
{
    StackPanel stackPanel = (sender as StackPanel);
    stackPanel.Children.Clear();
    stackPanel.Children.Add(XamlReader.Load(XElement.Parse(xaml).ToString()) as FrameworkElement);
}

使用从数据库加载的东西中的XAMLReader创建控件。您可以根据您的特定情况调整所有这些(菜单和菜单项......)