2
我想使用UWP的新功能 - > x:綁定。爲此,我的所有頁面都需要具有ViewModel屬性(如教程中所述)。 爲了避免代碼口是心非,我已經建立了基類如下:頁面類型參數
public abstract class BasePage<TBaseVM> : Page, where TBaseVM : BaseVM
{
public TBaseVM VM { get; private set; }
protected BasePage()
{
DataContextChanged += (s, e) => VM = e.NewValue as TBaseVM;
}
}
正如你可以看到這個BasePage類包含屬性稱爲「VM」和屬性的類型BaseVM的。因此,我不需要在每個派生類上定義VM屬性。
在XAML定義然後,我創建派生頁面「的MainPage」如下:
<pages:BasePage
x:Class="Realarm.View.Pages.MainPage"
x:TypeArguments="viewModel:MainVM">
通過這樣做,即使ReSharper的智能感知我提供了MainPage.xaml中,從「MainVM」性質,因而可以這樣寫:
<ListView ItemsSource="{x:Bind VM.AlarmsVM}">
不幸的是,當我嘗試生成項目,我得到錯誤MainPage.gics:
小號everity代碼說明項目文件行 錯誤CS0305使用通用型 '的BasePage' 需要1個類型參數Realarm d:\ Realarm \ OBJ \ 86 \調試\查看\網頁\ MainPage.gics 13
任何幫助?
看起來好像沒什麼問題。也許是因爲你的班級被標記爲「抽象」?你不能實例化一個抽象類,嘗試刪除它。 –
當然,我有派生類,我試圖實例化。你有沒有試過從問題中運行代碼? –
@de_ViL你解決了這個問題嗎?我有同樣的問題,我發現的一切都說它應該工作,但我得到了同樣的錯誤,因爲你 – thorkia