我的Xamarin Forms應用程序在Android上運行時表現異常。當我在UWP上運行時,一切似乎都正常,但是當我在Android上啓動相同的應用程序時,我綁定的模型的公共屬性似乎消失了,就好像它們不存在一樣。公共C#屬性在Xamarin Forms上不可見Android
該模型定義的接口如下所示:
public interface IRegionModel
{
string Id { get; set; }
string Name { get; set; }
string ShortName { get; set; }
string UrlName { get; set; }
string Description { get; set; }
string CityId { get; set; }
}
實現是非常一致:
public class RegionModel : IRegionModel
{
public string Id { get; set; }
public string Name { get; set; }
public string ShortName { get; set; }
public string UrlName { get; set; }
public string Description { get; set; }
public string CityId { get; set; }
}
,我填充我的視圖模型與RegionModel的觀察集合類型:
public class RegionListViewModel : ViewModelBase
{
public ObservableCollection<IRegionModel> Regions { get; set; } = new ObservableCollection<IRegionModel>();
protected string CityId { get; set; }
public void Init(string cityId)
{
CityId = cityId;
}
public async override void Start()
{
base.Start();
LoadDesignData();
IsLoading = false;
}
protected override void LoadDesignData()
{
base.LoadDesignData();
for (var i = 1; i < 5; i++)
{
var model = new RegionModel()
{
Id = i.ToString(),
Description = "Region description " + i.ToString(),
ShortName = "Downtown",
Name = "Downtown",
UrlName = "Downtown",
CityId = "mcallen"
};
Regions.Add(model);
}
}
}
正如你所看到的,我可以訪問每個屬性模型的模型,並用我的屬性填充它們。
但是當我運行在Android應用程序,這些屬性立即無形:
我沒有得到任何異常或錯誤,但性能根本不存在。
我想也許這是由於陳舊的二進制文件(如這裏建議:C# some public properties are not accessible, actually completely missing)
但是,我做了全面的清理和手動清潔,對每一個項目的手動清除了所有的bin/OBJ文件夾和重建它。此外,我做了一些代碼更改和XAML更改,這些都顯示出來了,所以項目肯定會更新...
還有什麼可能是錯誤的?屬性如何消失?
檢查連接選項,如果您選擇了「全部連接」,那麼如果分析儀無法找到使用它將刪除「未使用」的屬性。 – Gusman
另外,你確定它們不在那裏,它不是調試器的問題嗎?您是否嘗試在聲明後添加代碼以檢索值?我有時看到過這樣的行爲,調試器無法在調試時檢索所有數據。 – Gusman
該死的,那就是它!聯動是SDK和用戶程序集。當我更改爲none時,它不會生成,但是當我將其更改爲SDK時,它才起作用!請轉貼爲答覆,以便我可以接受!順便說一句,這個選項甚至意味着什麼?爲什麼我不想鏈接我的程序集? – SelAromDotNet