0
我有一個WPF棱鏡應用程序與例如我想編輯幾個客戶。因此,例如,我爲5個客戶提供了5個選項卡。 每個客戶有5個子標籤,如設置,細節等WPF棱鏡只發送事件到活動標籤
當我加載客戶或更新它時,我想要發佈到每個子標籤的棱鏡事件得到更新。 唯一的問題是:其他子標籤將更新與同一個客戶,以及這不是該計劃:D
所以有可能只有活動標籤和那些viewmodels可以訂閱的事件,或像這樣?
感謝您的幫助!
我有一個WPF棱鏡應用程序與例如我想編輯幾個客戶。因此,例如,我爲5個客戶提供了5個選項卡。 每個客戶有5個子標籤,如設置,細節等WPF棱鏡只發送事件到活動標籤
當我加載客戶或更新它時,我想要發佈到每個子標籤的棱鏡事件得到更新。 唯一的問題是:其他子標籤將更新與同一個客戶,以及這不是該計劃:D
所以有可能只有活動標籤和那些viewmodels可以訂閱的事件,或像這樣?
感謝您的幫助!
我做了這樣的事情而回
我不記得確切的細節,但訂閱事件的標籤,用一個LoadConsumerMessage
,消息曾在除了通常的郵件屬性兩個額外的屬性:一Id
字段和IsHandled
字段。
如果我想要一個特定的選項卡來加載消費者,我會用我想要的選項卡的ID填充Id
。例如,加載在當前選項卡的客戶我會使用
// Id was typically a Guid
var event = new LoadConsumerEvent() { Id = this.Id; };
然後在處理該事件的訂戶,我會忽略該事件,如果沒有匹配
if (e.Id == Guid.Empty || e.Id == this.Id)
{
// Load Customer
}
如果我想只有第一個可用的選項卡來處理該事件,我設置IsHandled
財產的第一用戶,而忽視了事件如果這是有史以來真正
if (e.IsHandled)
return;
// Do processing
e.IsHandled = true;
嘿,這將意味着發送該事件每次到每個標籤,然後德如果需要處理訂閱,請在訂閱所在的基類中進行處理。 這似乎不是一個令人滿意的解決方案:/ –
@inxs我想我明白你在說什麼。是否有一個原因,爲什麼每個Tab不是它自己的ViewModel,該ViewModel包含對子選項卡ViewModels的引用?你甚至不需要這樣的事件 – Rachel
我更喜歡封裝的tab-sub-tab結構的原因是它們不需要以任何方式將視圖引用到視圖模型,這使得它將一些屬性更改爲public等等。 我只是認爲用棱鏡事件做這件事會是一個「更平滑」的做法。 –