Ho recentemente ignorato la griglia WPF di DevXpress per dotarmi di una proprietà SelectedObject a cui posso accedere dal mio ViewModel associato in modo approssimativo.Proprietà WPF ReadOnly dependance utilizzando MVVM
Ho creato una proprietà di dipendenza SelectedObject e ho associato OneWayToSource nel mio XAML.
Tutto funziona, ma se provo a renderlo ReadOnly (per completezza) viene visualizzato un errore di compilazione e viene indicato che non è possibile eseguire il binding a una proprietà ReadOnly. Il codice sotto compila, ho incluso (ma rimosso) i bit che ho cercato nei miei tentativi di ottenere la proprietà ReadOnly.
Qualcuno può aiutare per favore?
la proprietà di dipendenza dal mio controllo sovrascritto assomiglia:
//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();
}
}
Il XAML è:
<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>
Grazie per il vostro aiuto Kent - sfortunatamente non penso di poter usare l'osservatore in nessun DP da usare, ma è bello sapere che cose del genere esistono! Il mio programma funziona comunque, odio solo abbandonare quel "lancio di NotImplementedException();" - Non è una "finestra rotta" ma non è lontana! ma grazie mille per esserti interessato. –
Penso che questo sia un problema serio con WPF e l'adozione del pattern MVVM. Quando la proprietà source è di sola lettura, è possibile definire binding OneWay, il che è ottimo. Ma quando il DP di destinazione è di sola lettura non è possibile definire i binding OneWayToSource. Non capisco perché no ... – Oskar
E sono davvero frustrato nel sentire che anche questo non verrà supportato in .NET 4. – Oskar