Lista de vinculación de WFP oc objeto a un control personalizado

Estoy tratando de vincular una lista de objetos de dispositivo a un control de vestuario en el que estoy trabajando. Recibo este error.

No se puede establecer un 'Enlace' en la propiedad 'Dispositivos' del tipo 'CamaraSelection'. Un 'Enlace' solo se puede establecer en una DependencyProperty de un DependencyObject.

código xml

<trainControl:CamaraSelection  Devices="{Binding DeviceList}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>

Código de control

    private List<Device> devices = new List<Device>();
    public static readonly DependencyProperty DeviceListProperty =
    DependencyProperty.Register("DeviceList", typeof(List<Device>), typeof(CamaraSelection),
                            new PropertyMetadata(default(ItemCollection), OnDeviceListChanged));


    private static void OnDeviceListChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
    {
        var camaraSelection = dependencyObject as CamaraSelection;

        if (camaraSelection != null)
        {
            camaraSelection.OnDeviceListChanged(dependencyPropertyChangedEventArgs);
        }
    }
    private void OnDeviceListChanged(DependencyPropertyChangedEventArgs e)
    {

    }

    public List<Device> Devices
    {
        get { return (List<Device>)GetValue(DeviceListProperty); }
        set { SetValue(DeviceListProperty, value); }
    }

preguntado el 11 de septiembre de 13 a las 14:09

2 Respuestas

La propiedad en la que se establece el enlace tiene que ser una DependencyProperty. En tu caso es el Devices-propiedad. El primer argumento en el método DependencyProperty.Register() tiene que ser el nombre de su propiedad. El primer argumento en su código es "DeviceList" pero el nombre de su propiedad es Devices.

public static readonly DependencyProperty DevicesProperty =
DependencyProperty.Register("Devices", typeof(List<Device>), typeof(CamaraSelection),
                        new PropertyMetadata(default(ItemCollection), OnDeviceListChanged));


public List<Device> Devices
{
    get { return (List<Device>)GetValue(DevicesProperty ); }
    set { SetValue(DevicesProperty, value); }
}

Respondido el 11 de Septiembre de 13 a las 14:09

La propiedad "Dispositivos" en su clase debe ser una propiedad de dependencia, no la "Lista de dispositivos". La propiedad a la que se vincula debe ser una propiedad de dependencia.

Respondido el 11 de Septiembre de 13 a las 14:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.