我对使用XAML for WP8.1的整个数据绑定事项不熟悉。我一直在互联网上搜索,似乎无法找到解决问题的直接答案。
我的页面上有一个包含3列的ListBox控件。我需要做的是用每个列填充相应的数据。
我有一个课程,定义了一个" CompleteStation"它由3个字符串组成(StationName,Distance和GasPrice)
这是ListBox的XAML代码...我如何能够将ListBox传递给一个CompleteStation(3个字符串),并将每个字符串分成正确的列?
这是我下面的XAML代码。在我的主要课程中,我只是将一个CommpleteStation项目添加到ListBox中。
另外,我是否需要在XAML代码中引用CompleteStation类?如果是,我该怎么做?
<ListBox Name="listBoxStations" FontSize="20" Grid.Row="1">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Width="480" Background="#e6e6e6" Margin="0,10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding Station}"/>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Distance}"/>
<TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding Price}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
谢谢!
-Johan
答案 0 :(得分:1)
假设您的 CompleteStation 是ObservableCollection
,它实现了NotifyPropertyChanged
,那么XAML应如下所示
<ListBox Name="listBoxStations" ItemSource={Binding CompleteStation} FontSize="20" Grid.Row="1">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Width="480" Background="#e6e6e6" Margin="0,10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding Station}"/>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Distance}"/>
<TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding Price}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
你的模特:
public sealed class CommpleteStation
{
public string Station{get;set;}
public string Distance{get;set;}
public string Price{get;set;}
}
您的ViewModel:
public sealed class MyViewModel
{
public ObservableCollection<CommpleteStation> CommpleteStations{get;private set;}
public MyViewModel()
{
CommpleteStations = new ObservableCollection<CommpleteStation>();
CommpleteStations.Add(new CommpleteStation{Station="One", Distance="15",Price="130"};
}
}
然后,
在UI的代码隐藏中,&#34; View&#34;,您实例化ViewModel并将其设置为View的DataContext。
public MyView()
{
this.DataContext = new MyViewModel();
}