我有一個DropDownView
其中包含一個DropDownList如下無法解析使者的不確定性多的ViewModels
<ComboBox Grid.Column="1" ItemsSource="{Binding Path=MyList}"
SelectedItem="{Binding Path=Item}" Height="30"/>
的DropDownViewModel
有2個屬性如下
private ObservableCollection<string> _myList;
public ObservableCollection<string> MyList {
get { return _myList; }
set {
if (_myList == value)
return;
_myList = value;
RaisePropertyChanged("MyList");
}
}
private string _item;
public string Item {
get { return _item; }
set {
if (_item == value)
return;
_item = value;
Messenger.Default.Send(_item); //line1
RaisePropertyChanged("Item");
}
}
現在,我有多個的ViewModels這創建如下DropdownViewModel
的多個實例。每個ViewModel都屬於一個獨立的視圖,並且不會相互關聯。 (爲了簡單起見只考慮2視圖模型創建。)
ViewModel1
public class ViewModel1
{
private readonly DropDownViewModel _ddVM1;
public ViewModel1(){
_ddVM1 = new DropDownViewModel();
Messenger.Default.Register<string>(this, this.GetItem1);
}
private void string GetItem1(string obj){
//perform some function
}
}
ViewModel2
public class ViewModel2
{
private readonly DropDownViewModel _ddVM2;
public ViewModel2(){
_ddVM2 = new DropDownViewModel();
Messenger.Default.Register<string>(this, this.GetItem2);
}
void string GetItem2(string obj){
//perform some function
}
}
現在,當我運行該應用程序,並從任一項的DropDownList
選擇一個值查看時,總是調用第一個註冊的函數(在這種情況下爲GetItem1
)。我只用一個Messenger.Default.Register
測試了代碼,只有一個ViewModel
,並且該應用運行良好。我還測試了代碼是否正在創建多個實例DropDownView
和DropDownViewModel
。在這方面似乎也沒有問題。
我不明白爲什麼這種情況發生在多於一個ViewModel的情況下,因爲每個ViewModel
都有自己的DropDownView
和DropDownViewModel
實例。那麼內部究竟發生了什麼?爲什麼在line1
上創建了多個DropDownViewModel
實例時,該應用會以怪異的方式運行?如何解決這個問題?
附註:你確定你的問題與ASP.Net有關嗎?如果沒有 - 刪除標籤。同時考慮刪除帖子中的謝謝文字。 – 2014-09-26 06:12:25