你好社区任何人都可以说如何动态地将控件添加到堆栈面板
注意:我需要的是我必须创建一个菜单,从数据库中获取数据并相应地创建菜单项,任何人都可以说我如何创建这样的菜单我是银光的新手
我正在使用silverlight 3 beta和表达式blend3 + sketch flow请帮我知道如何设计那些
答案 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创建控件。您可以根据您的特定情况调整所有这些(菜单和菜单项......)