【发布时间】:2009-09-30 07:02:55
【问题描述】:
你好社区任何人都可以请说如何将控件动态添加到堆栈面板中
注意:我需要创建一个菜单,从数据库中获取数据并相应地创建菜单项,任何人都可以说我如何创建这样的菜单,我是 silver light 的新手
我正在使用 silverlight 3 beta 和 expression blend3 + sketch flow 请帮助我了解如何设计这些
【问题讨论】:
标签: silverlight controls
你好社区任何人都可以请说如何将控件动态添加到堆栈面板中
注意:我需要创建一个菜单,从数据库中获取数据并相应地创建菜单项,任何人都可以说我如何创建这样的菜单,我是 silver light 的新手
我正在使用 silverlight 3 beta 和 expression blend3 + sketch flow 请帮助我了解如何设计这些
【问题讨论】:
标签: silverlight controls
请原谅变量名,但这里是动态添加项目到堆栈面板的代码 sn-p
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">
【讨论】:
首先,如果您的 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 从您从数据库加载的内容创建的。您可以根据您的特定场景调整所有内容(菜单和菜单项...)
【讨论】: