none
'Binding' sólo se puede establecer en una DependencyProperty de un DependencyObject.' RRS feed

  • Pregunta

  • Buenas, estoy tratando de que un UserControl acepte el binding de un List<Stock> pero me da el error:

    System.Windows.Markup.XamlParseException: ''Binding' no se puede establecer en la propiedad 'Stocks' de tipo 'CantidadControl'. 'Binding' sólo se puede establecer en una DependencyProperty de un DependencyObject.'

    Dejo el codigo aca:

    XAML

    <UserControl x:Class="Peluqueria_Marfil.CantidadControl" x:Name="cantidadControl"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 xmlns:local="clr-namespace:Peluqueria_Marfil"
                 mc:Ignorable="d" 
                 d:DesignHeight="300" d:DesignWidth="300"
                 xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
            TextElement.Foreground="{DynamicResource MaterialDesignBody}"
            TextElement.FontWeight="Regular"
            TextElement.FontSize="13"
            TextOptions.TextFormattingMode="Ideal" 
            TextOptions.TextRenderingMode="Auto"        
            Background="{DynamicResource MaterialDesignPaper}"
            FontFamily="{DynamicResource MaterialDesignFont}">
        <Grid>
            <ComboBox x:Name="CBcantidad" materialDesign:HintAssist.Hint="Seleccione Cantidad" SelectedIndex="0">
            </ComboBox>
        </Grid>
    </UserControl>

    C#

    public List<Stock> Stocks
            {
                get { return (List<Stock>)GetValue(StocksProperty); }
                set { SetValue(StocksProperty, value); }
            }
    
            public static readonly DependencyProperty StocksProperty = DependencyProperty.Register("Stocks", typeof(List<Stock>), typeof(StockControl), new FrameworkPropertyMetadata() {
                DefaultValue = new List<Stock>(),
                BindsTwoWayByDefault = true,
                DefaultUpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged,
                PropertyChangedCallback = new PropertyChangedCallback(PropiedadCargada)
            });
    
    
            public CantidadControl()
            {
                InitializeComponent();
                DataContext = this;
                
            }
    
            private static void PropiedadCargada(DependencyObject obj, DependencyPropertyChangedEventArgs e)
            {
                
                /*
                int cantidad = 0;
                List<Stock> listaStocks = (List<Stock>)obj.GetValue(StocksProperty);
                
                foreach (Stock stock in listaStocks)
                {
                    cantidad += stock.Cantidad;
                }
    
                Console.WriteLine(cantidad);
                */
            }

    El pedazo de Xaml donde esta el Binding:

    <local:CantidadControl Stocks="{Binding Producto.Stock, Mode=TwoWay}"></local:CantidadControl>  

    Gracias.

    domingo, 11 de junio de 2017 16:23