Recientemente he redefinido la cuadrícula DevXpress WPF para obtener una propiedad SelectedObject a la que puedo acceder desde mi ViewModel ligeramente enlazado.WPF ReadOnly Propiedades de dependencia usando MVVM
He hecho una propiedad de dependencia SelectedObject y lo tengo vinculado OneWayToSource en mi XAML.
Everthing funciona bien, pero si trato de hacerlo de forma ReadOnly (para completar) obtengo un error de compilación y dice que no puedo enlazar a una propiedad ReadOnly. El siguiente código compila, he incluido (pero eliminado) los bits que he estado intentando en mis intentos de obtener la propiedad ReadOnly.
¿Alguien puede ayudarme por favor?
la propiedad de dependencia de mi control reemplazado parece:
//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();
}
}
El XAML es:
<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>
Gracias por su ayuda Kent - lamentablemente, no creo que pueda usar el observador en ningún lugar donde pueda usar DP, ¡pero es bueno saber que existen tales cosas! Mi programa funciona de todos modos, solo odio dejar eso 'throw new NotImplementedException();' - No es una "ventana rota", pero no está lejos. pero muchas gracias por investigarlo. –
Creo que este es un problema grave con WPF y la adopción del patrón MVVM. Cuando la propiedad fuente es de solo lectura, se le permite definir enlaces OneWay, lo cual es genial. Pero cuando el DP objetivo es de solo lectura, no está permitido definir enlaces OneWayToSource. Realmente no entiendo por qué no ... – Oskar
Y estoy realmente frustrado al escuchar que esto tampoco va a ser soportado en .NET 4. – Oskar