我有一個奇怪的問題,有一個簡單的類有3個公共屬性。由於某些原因,即使定義它們的代碼是相同的,只有兩個屬性「存在」。C#一些公共屬性不可訪問,實際上完全缺失
在代碼的其他地方,我綁定了這三個屬性,其中兩個屬性工作(公制& weightUnits),但「distanceUnits」不。
當我在實例化該類的代碼上放置斷點時,將鼠標懸停在對象上時,只有「metric」和「weightUnits」顯示爲公共屬性,當展開「非公共成員」時,那裏但是「distanceUnits」仍然缺失。
調試器屏幕截圖:
public class AppGlobalSettings : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private bool _metric;
public bool metric
{
get { return _metric; }
set {
_metric = value;
if (_metric) {
distanceUnits = "cm";
weightUnits = "Kg";
}
else {
distanceUnits = "in.";
weightUnits = "lbs";
}
OnPropertyChanged();
}
}
private string _weightUnits;
public string weightUnits { get { return _weightUnits; } set { _weightUnits = value; OnPropertyChanged(); } }
private string _distanceUnits;
public string distanceUnits { get { return _distanceUnits; } set { _distanceUnits = value; OnPropertyChanged(); } }
...
}
我能想到的唯一的皺紋是該對象(見下文)實例爲「公共靜態的,但不能解釋爲什麼只有一些屬性可...
public class App : Application
{
public static AppGlobalSettings appSettings;
public App() {
appSettings = new AppGlobalSettings();
appSettings.distanceUnits = "in."; // ** just for debugging **
...
}
我知道屬性「存在」,並且是公衆,因爲我把在調試代碼(如上所述)和它的作品(它確實調用了「distanceUnits」的「set」方法),但它不會顯示在調試器中,並且綁定不起作用。
爲了完整起見,這裏是標籤綁定代碼顯示distanceUnits:
Binding girthUnitBinding = new Binding("distanceUnits");
girthUnitBinding.Source = App.appSettings;
girthCell.unitLabel.SetBinding(Label.TextProperty, girthUnitBinding);
而在這部分,如果我編輯「distanceUnits」到「weightUnits」只是作爲一個測試中,裝訂作品。
因此,任何想法爲什麼propertyChanged處理程序和調試器可以看到「weightUnits」,而不是「distanceUnits」?
你試過乾淨的版本並重新啓動VS? –
是的,我確實嘗試過「構建 - >清理解決方案」,並重新啓動VS.我只是再次確認。不用找了。是否還有其他可以嘗試的「重建」或「清潔」類型的程序? – IamJohnny45
不是我所聽說過的。 'AppGlobalSettings'與'App'類在同一個程序集中? –