WP8在第二个视图中绑定数据

时间:2013-10-25 19:15:43

标签: xaml mvvm windows-phone-8 viewmodel bind

我正在创建一个wp8应用。我有两个视图和两个视图模型:

VMMainPage vmMainPage - > MainPage.xaml中 VMresortInfo vmResortInfo - > resortInfo.xaml

第一个工作正常。但是,当我尝试将第二个视图与其viewmodel绑定时,我遇到了问题。

首先,在我的App.xaml.cs中,我已经像使用vmMainPage一样初始化了vmResortInfo。

    private static VMresortInfo vmResortInfo = null;
    public static VMresortInfo VmResortInfo
    {
        get
        {
            if (vmResortInfo == null)
            {
                vmResortInfo = new VMresortInfo();
            }
            return vmResortInfo;
        }
    }

然后,在resortInfo.xaml.cs中,我更改了视图的datacontext:

    public resortInfo()
    {
        InitializeComponent();
        DataContext = App.VmResortInfo;

    }

最后,我尝试将视图与viewmodel绑定,如下所示:

       <phone:PivotItem Header="info">
            <ItemsControl ItemsSource="{Binding resort}">
                <ItemsControl.ItemTemplate> 
                    <DataTemplate>
                        <Grid>

                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="2*"/>
                            <ColumnDefinition Width="4*"/>
                        </Grid.ColumnDefinitions>

                            <StackPanel Margin="5,5,5,5" Grid.Column="0">
                                <TextBlock Text="{Binding status}"/>
                                <TextBlock Text="{Binding name}"/>
                            </StackPanel>              
                        </Grid>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </phone:PivotItem>

VMresortInfo是:

public class VMresortInfo
{
    private Resort resort {get; set;}

    public VMresortInfo()
    {
        this.resort = new Resort();
        this.resort.name = "NAME";
        this.resort.status = "abierta";
        this.resort.imageURL = new Uri("/Assets/fm.png", UriKind.RelativeOrAbsolute);
    }

    public void setName(string resortNameSelected)
    {
            this.resort.name = resortNameSelected;
    }
}

但是当我运行应用程序时......没有显示任何信息。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

Omg ......我让自己变得不必要......

        <phone:PivotItem Header="info">                          
            <Grid>
                   <Grid.ColumnDefinitions>
                       <ColumnDefinition Width="2*"/>
                       <ColumnDefinition Width="4*"/>
                   </Grid.ColumnDefinitions>

                   <StackPanel Margin="5,5,5,5" Grid.Column="0">
                        <TextBlock Text="{Binding resort.name}"/>
                        <TextBlock Text="{Binding resort.status}"/>
                    </StackPanel>              
            </Grid>                
        </phone:PivotItem>

此致