0

我正在尝试将设备对象列表绑定到我正在处理的服装控件。我收到这个错误。

不能在“CamaraSelection”类型的“设备”属性上设置“绑定”。只能在 DependencyObject 的 DependencyProperty 上设置“绑定”。

xml代码

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

控制代码

    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); }
    }
4

2 回答 2

3

设置绑定的属性必须是DependencyProperty. 在您的情况下,它是Devices-property。DependencyProperty.Register() 方法中的第一个参数必须是您的属性的名称。您的代码中的第一个参数是,"DeviceList"但您的属性名称是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); }
}
于 2013-09-11T13:09:19.703 回答
2

类中的“设备”属性必须是依赖属性,而不是“设备列表”。您要绑定的属性必须是依赖属性。

于 2013-09-11T13:09:37.647 回答