我正在嘗試使用MVVM的一些不同的東西。在我們的ViewModel屬性中,綁定到View是公共的。我正在採取一個按鈕綁定的例子。這是一個簡單的例子。在ViewModel中製作綁定屬性的內部而不是公共
View.xaml:
<Button Content="Test Button" Command="{Binding TestButtonCommand}" />
ViewModel.cs
private ICommand _testButtonCommand;
public ICommand TestButtonCommand
{
get { return _testButtonCommand?? (_testButtonCommand= new RelayCommand(SomeMethod)); }
}
這裏,我的問題是,我們可以讓內部的TestButtonCommand
而不是公衆?內部意味着它可以被當前的項目訪問,所以他們不應該有這樣的問題嗎?但是,當我試圖做到這一點,它沒有奏效。在getter中添加一個斷點未被命中。那麼爲什麼我們不能做到內部。
這是msdn的鏈接。
http://msdn.microsoft.com/en-us/library/ms743643.aspx
屬性您使用的綁定,綁定源屬性必須是你的類的公共屬性。顯式定義的接口屬性不能用於綁定目的,也不能訪問沒有基本實現的受保護的,私有的,內部的或虛擬的屬性。
爲什麼我們不能這樣做?如果在同一個項目中工作,內部訪問與公共內容相同。那麼爲什麼我們不能在這裏使用內部。必須有一個理由,這些應該公開,我正在尋找這個原因。
internal ICommand TestButtonCommand { ...... }
因爲[只能綁定到公共屬性,子屬性和索引器或任何CLR對象](http://msdn.microsoft.com/zh-cn/library/ms743643.aspx)。爲什麼WPF團隊會參與這樣的設計決策?我不知道,你應該問他們:) –
它的微軟,所以我們不能做任何事情, –