【问题标题】:Dynamically add controls to a silveright StackPanel to Create a menu将控件动态添加到 silverlight StackPanel 以创建菜单
【发布时间】:2009-09-30 07:02:55
【问题描述】:

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

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

我正在使用 silverlight 3 beta 和 expression blend3 + sketch flow 请帮助我了解如何设计这些

【问题讨论】:

标签: silverlight controls


【解决方案1】:

请原谅变量名,但这里是动态添加项目到堆栈面板的代码 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">

【讨论】:

    【解决方案2】:

    首先,如果您的 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 从您从数据库加载的内容创建的。您可以根据您的特定场景调整所有内容(菜单和菜单项...)

    【讨论】:

    • friend devMomentum,我将从 DB 加载 N 个项目我如何添加我可以在 urs 答案中使用 foreach 或 for 循环吗?XElement 是从数据库获取数据的变量,我是对的,我可以使用一些东西吗像这样 private void spValue_Loaded(object sender, RoutedEventArgs e) { for(int i =0;i
    猜你喜欢
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 2017-11-21
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    相关资源
    最近更新 更多