使用DataTemplate

时间:2012-03-12 23:40:22

标签: c# windows-phone-7 datatemplate

为了这个缘故,我对C#和Windows Phone 7很陌生,但是,我已经投身于为自己制作一个小应用程序了。这是我的问题:

我正在尝试设置一个DataTemplate,它将定位我在MainPage.xaml.cs中声明的Name和Drinks变量。这是我点击button1时的动作:

        private void button1_Click(object sender, RoutedEventArgs e)
    {
        string Name = participantName.Text;
        int Drinks = 0;

        listBox1.Items.Add(Name + Drinks);
    }

这是来自MainPage.xaml的我的DataTemplate

            <ListBox Height="Auto" HorizontalAlignment="Stretch" Margin="7,74,0,0" Name="listBox1" VerticalAlignment="Stretch" Width="Auto">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" Height="132">
                        <TextBlock Text="{Binding Path=Name}" FontSize="35" />
                        <StackPanel Width="370">
                            <TextBlock Text="{Binding Path=Drinks}" FontSize="35" />
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

问题是我的数据没有显示。它在没有DataTemplate的情况下完美运行,但是一旦我使用它,我的文本就无法通过。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

模板本身没问题。但是,模板上的绑定目前不正确。

当您向列表框添加新项目时,您只是添加一个普通的旧字符串(当前缺少一个空格,BTW。)但是,您的绑定期望列表中的对象具有{{1属性和Name属性,当然Drinks类没有。

这里通常的解决方案是通过创建一个类来存储数据本身(可能是string,并使用适当的PersonDrinkName属性,从逻辑上将数据模型与您的演示文稿分开)然后将这些对象添加到列表中。

您应该阅读MVVM模式,因为它提供了一种确保数据更改反映在视图中的绝佳方法,反之亦然。

答案 1 :(得分:0)

http://amarchandra.wordpress.com/2011/12/18/binding-multiple-object-in-wp7-using-listbox/

以下是使用datatemplate绑定数据的示例。我希望这对你有帮助。