Ich versuche einige verschiedene Dinge mit MVVM. In unserem ViewModel sind Eigenschaften, die an View gebunden sind, öffentlich. Ich nehme ein Beispiel für eine Knopfbindung. Hier ist ein einfaches Beispiel.Binding-Eigenschaft intern statt öffentlich in ViewModel machen
View.xaml:
<Button Content="Test Button" Command="{Binding TestButtonCommand}" />
ViewModel.cs
private ICommand _testButtonCommand;
public ICommand TestButtonCommand
{
get { return _testButtonCommand?? (_testButtonCommand= new RelayCommand(SomeMethod)); }
}
Hier meine Frage ist, dass wir TestButtonCommand
intern statt öffentlich machen? Intern bedeutet, dass es für das aktuelle Projekt zugänglich ist, also sollte es kein Problem sein, das zu tun? Aber als ich das versuchte, hat es nicht funktioniert. Das Hinzufügen eines Haltepunkts in Getter wurde nicht getroffen. Warum können wir es nicht intern machen?
Hier ist der Link von msdn.
http://msdn.microsoft.com/en-us/library/ms743643.aspx
Die Eigenschaften verwenden Sie als Bindungsquelle Eigenschaften für eine Bindung müssen die öffentlichen Eigenschaften der Klasse sein. Auf explizit definierte Schnittstelleneigenschaften kann für Bindungszwecke nicht zugegriffen werden, und auch keine geschützten, privaten, internen oder virtuellen Eigenschaften, die keine Basisimplementierung aufweisen.
Warum können wir das nicht tun? Im Fall von Zugriff ist intern das gleiche wie öffentlich, wenn Sie im selben Projekt arbeiten. Dann können wir hier intern nicht verwenden. Es muss einen Grund geben, dass diese öffentlich sein sollten, und ich suche nach diesem Grund.
internal ICommand TestButtonCommand { ...... }
Da [Sie können nur an öffentliche Eigenschaften, Untereigenschaften und Indexer oder ein beliebiges CLR-Objekt binden] (http://msdn.microsoft.com/en-us/library/ms743643.aspx). Warum hat das WPF-Team eine solche Designentscheidung getroffen? Ich weiß nicht, Sie sollten sie fragen :) –
Sein Microsoft, so können wir nichts tun, –