因此,與PRISM
玩,我有一個網格誰的Visibility
屬性綁定到視圖模型中的屬性,如此。棱鏡SetProptery不開火通知?
的XAML
Grid Grid.RowSpan="2" Grid.ColumnSpan="3" Background="#7F808080" Visibility="{Binding LoadingVisibility}">
代碼隱藏
private Visibility loadingVisibility = Visibility.Visible;
public Visibility LoadingVisibility
{
get
{
return loadingVisibility;
}
set
{
SetProperty(ref loadingVisibility, value);
}
}
現在,如果我這樣做LoadingVisibility = Visibility.Collapsed;
,網格不會消失,仍清晰可見。
如果我再在SetProperty(ref loadingVisibility, value);
設置斷點,我可以看到的loadingVisibility
原始值,被設定爲Visibile
,我可以看到value
設置爲Collapsed
。 如果我再踩下去,我可以看到loadingVisiblity
現在已經改爲collapsed
。在這一點上,我期望Grid
被通知,然後執行'獲取'來檢索值。這不會發生。
綁定正在工作,因爲裝載時調用了Get
,並且如果我將private Visibility loadingVisibility = Visibility.Visible;
更改爲Collapsed
並運行代碼,網格開始隱形。
所以我的問題是,執行SetProperty
後,爲什麼Get
不是?
編輯: 只要你能看到我設置的屬性。
public ShellViewModel(IEventAggregator IEventAggregator)
{
IEventAggregator.GetEvent<PubSubEvent<HardwareLoaded>>().Subscribe(x =>
{
if (!x.HardwareOK)
{
MessageBox.Show("There was an issue loading hardware. See Log");
}
LoadingVisibility = Visibility.Collapsed;
});
}
編輯2: 剛發現一些有趣的事情,如果我註釋掉Subscribe
LoadingVisibility = Visibility.Collapsed;
,然後添加一個按鈕XAML和具有click事件,像這樣則一切正常。
private void Button_Click(object sender, RoutedEventArgs e)
{
mvm.LoadingVisibility = Visibility.Collapsed;
}
所以現在我想的問題是爲什麼,當這兩種方法調用一套物業,確實只有一個工作充分,並導致Get
工作?
沒有它的訂閱EventAggregator。我在那裏放置了一個斷點,它確實被執行了。 – Gaz83
檢查**輸出窗口**是否有綁定錯誤。 –
@MikeEason已經做到了,看不到任何。 – Gaz83