我正在創建一個移動Windows應用程序。我在UWP的視圖,其xaml.cs文件用下面的代碼開始:在UWP中使用綁定和DataContext不起作用
using Windows.Storage;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using EnergyBattle.Helpers;
namespace EnergyBattle.Views.Tutorial
{
public sealed partial class TutorialPage1 : Page
{
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
StorageFolder localFolder = ApplicationData.Current.LocalFolder;
UniversalData VM = UniversalData.Instance;
public TutorialPage1()
{
this.InitializeComponent();
DataContext = VM;
}
相應視圖具有以下標記代碼:如圖所示
<Page
x:Class="EnergyBattle.Views.Tutorial.TutorialPage1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:EnergyBattle.Views.Tutorial"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" >
<TextBlock>Select your sportclub</TextBlock>
<ListView ItemsSource="{Binding ListOfSportclubs}" IsItemClickEnabled="True" ItemClick="listItemClick">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0"><Run Text="{Binding name}" /></TextBlock>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
</Page>
我試圖使用結合(在「」)中顯示我保存在模型中的列表中的項目。 DataContext中包含正確的數據,正如您在此斷點處所看到的那樣:https://i.stack.imgur.com/8TFVi.png - 請注意,此時仿真器仍處於引導屏幕,因此視圖尚未加載。
當然,ListView應該用DataContext中的七個項目填充,對嗎?對我來說,除了測試文字「選擇你的運動俱樂部」之外,這個視圖並沒有顯示任何內容。
我在輸出窗口中收到以下錯誤信息:
Error: BindingExpression path error: 'ListOfSportclubs' property not found on 'EnergyBattle.Helpers.UniversalData'. BindingExpression: Path='ListOfSportclubs' DataItem='EnergyBattle.Helpers.UniversalData'; target element is 'Windows.UI.Xaml.Controls.ListView' (Name='null'); target property is 'ItemsSource' (type 'Object')
我在做什麼錯?非常類似的代碼在我見過的其他程序中工作得很好。
編輯:人們想了解更多關於ListOfSportclubs。這裏定義:
class UniversalData
{
public static UniversalData Instance { get; } = new UniversalData();
private List<Sportclub> ListOfSportclubs = new List<Sportclub>();
private List<Stoplicht> stoplichtList = new List<Stoplicht>();
public List<Sportclub> getSportclubList() { return ListOfSportclubs; }
public List<Stoplicht> getStoplichtList() { return stoplichtList; }
public void setSportclubList(List<Sportclub> sportclubList)
{
this.ListOfSportclubs = sportclubList;
}
public void setStoplichtList(List<Stoplicht> stoplichtList)
{
this.stoplichtList = stoplichtList;
}
}
是'ListOfSportclubs'屬性還是歸檔?顯示爲聲明它的類。 – Rafal
我使用這些信息編輯了我的帖子。 – Maplestrip
你的'ListOfSportclubs'必須是一個*公共屬性*和適當的getter。 – Romasz