J'ai récemment remplacé la grille DevXpress WPF pour me donner une propriété SelectedObject que je peux accéder à partir de ma ViewModel lâche.WPF ReadOnly propriétés de dépendance utilisant MVVM
J'ai créé une propriété de dépendance SelectedObject et l'ai liée à OneWayToSource dans mon code XAML.
Everthing fonctionne très bien, mais si j'essaye de le faire ReadOnly (pour l'exhaustivité) j'obtiens une erreur de compilation et dit que je ne peux pas me lier à une propriété ReadOnly. Le code ci-dessous compile, j'ai inclus (mais j'ai supprimé) les bits que j'ai essayés dans mes tentatives pour obtenir la propriété ReadOnly.
Quelqu'un peut-il vous aider s'il vous plaît?
La propriété de dépendance de mon contrôle surchargée ressemble:
//public static readonly DependencyPropertyKey SelectedRowKey = DependencyProperty.RegisterReadOnly("SelectedObject", typeof(object), typeof(MyGrid), new PropertyMetadata(null));
//public static readonly DependencyProperty SelectedObjectProperty = SelectedRowKey.DependencyProperty;
public readonly static DependencyProperty SelectedObjectProperty = DependencyProperty.Register("SelectedObject", typeof(object), typeof(MyGrid), new PropertyMetadata(null));
public object SelectedObject
{
get
{
return GetValue(SelectedObjectProperty);
}
set
{
throw new NotImplementedException();
}
}
Le XAML est:
<StackPanel>
<devxgrid:MyGrid AutoPopulateColumns="True" DataSource="{Binding Animals}" SelectedObject="{Binding MyObject, Mode=OneWayToSource}" Width="300" Height="300">
<devxgrid:MyGrid.View>
<MyGrid:TableView AllowEditing="False" Name="GridView" AutoWidth="True" />
</devxgrid:MyGrid.View>
</devxgrid:MyGrid>
</StackPanel>
Merci pour votre aide Kent - malheureusement, je ne pense pas que je peux utiliser l'observateur à theres aucun DP à utiliser, mais il est bon de savoir que de telles choses existent! Mon programme fonctionne de toute façon, je déteste juste quitter 'throw new NotImplementedException();' - Ce n'est pas une «fenêtre brisée» mais ce n'est pas loin! mais merci beaucoup d'y avoir réfléchi. –
Je pense que c'est un problème sérieux avec WPF et l'adoption du modèle MVVM. Lorsque la propriété source est en lecture seule, vous êtes autorisé à définir les liaisons OneWay, ce qui est génial. Mais quand le DP cible est en lecture seule, vous n'êtes pas autorisé à définir les liaisons OneWayToSource. Je ne comprends pas vraiment pourquoi pas .. – Oskar
Et je suis vraiment frustré d'entendre que cela ne va pas être pris en charge dans .NET 4 non plus. – Oskar