数据不是来自ItemsSource

时间:2013-09-03 12:30:59

标签: c# xaml windows-phone-7

这是我尝试在xaml中填充项目的地方

<ScrollViewer Grid.Row="2">
                <StackPanel>
                    <ItemsControl ItemsSource="{Binding EventsList}">
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Value}"/>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </StackPanel>
            </ScrollViewer>

这是视图模型中的虚拟方法,我有Binded

public string[] EventsList()
        {
            string[] values = {"event1", "event2"};
            return values;
        }

但这并没有给出任何输出。此方法也没有被调用。

3 个答案:

答案 0 :(得分:1)

这里有很多问题。

第一个是你不能绑定到一个方法。您只能绑定到属性。

第二个是你将TextBlock绑定到对象的Value,它应该是一个字符串。字符串没有Value属性。

请改为尝试:

public string[] EventsList
{
    get
    {
        string[] values = {"event1", "event2"};
        return values;
    }
}

然后绑定到此属性并显示完整的字符串对象(使用{Binding}

<ScrollViewer Grid.Row="2">
    <StackPanel>
        <ItemsControl ItemsSource="{Binding EventsList}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </StackPanel>
</ScrollViewer>

注意:它假设您声明EventList属性的类已被分配到您网页的DataContext属性。

答案 1 :(得分:1)

这不起作用,因为您正在尝试绑定到方法。您只能绑定到属性。

public string[] EventsList
{
    get
    {
        string[] values = {"event1", "event2"};
        return values;
    }
}

答案 2 :(得分:0)

试试这个

MainPage.xaml
      <ScrollViewer Grid.Row="2">
            <StackPanel>
                <ItemsControl Name="itemControl" ItemsSource="{Binding EventsList}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding}"/>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </StackPanel>
        </ScrollViewer>

<强> MainPage.xaml.cs中

 public MainPage()
    {
        InitializeComponent();            

        this.itemControl.ItemSource = EventsList();
    }