none
Como deixar itens específicos da minha listBox dinâmica inabilitados? RRS feed

  • Pergunta

  • Eu tenho uma ListBox que é carregado dinamicamente usando EF. Um dos filtros utilizados é que o produto exista no estoque.

    var query = (from p in db.Products
                            join s in db.Stocks
                             on new { p.SchoolID, p.ProductID }
                            equals new { s.SchoolID, s.ProductID }
                            where
                                s.Quantity > 0 &&
                                p.Active == true &&
                                p.SchoolID == _idSchool &&
                                p.ProductTypeID == 1
                            select p);
            lst.ItemsSource = query;

    Cód XAML do meu ListBox...

    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Grid>
                                <Border>
                                    <StackPanel Margin="1">
                                        <StackPanel.Background>
                                            <ImageBrush ImageSource="images/btnSalgados.png"/>
                                        </StackPanel.Background>
                                        <TextBlock Margin="0,0,0,0" Padding="4" Width="167" Height="52" TextWrapping="Wrap" Text="{Binding Name}" ToolTip="{Binding Name}" 
                                            TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="22" Foreground="White" />
                                        <TextBlock Margin="0,0,0,0"  Padding="4" Width="167" Height="40" TextWrapping="Wrap" Text="{Binding Price, StringFormat=\{0:N\}}" 
                                            TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="22" Foreground="White"/>
                                    </StackPanel>
                                </Border>
                            </Grid>
                        </DataTemplate>
                    </ListBox.ItemTemplate>

    A imagem de como aparece o ListBox para o usuário...

    A imagem de como aparece o ListBox para o usuário...

    Eu preciso que se o usuário selecionar um produto que só tem 1 no estoque (pois ao seleciona-ló o estoque do mesmo ficará zerado) esse item seja inabilitado para futuras seleções (para que ele não selecione um produto que não tenha em estoque).

    terça-feira, 15 de abril de 2014 13:15

Respostas

  • O código para desabilitar um item é esse:

                ListBoxItem item = (ListBoxItem)lst.ItemContainerGenerator.ContainerFromIndex(lst.SelectedIndex);
                item.IsEnabled = false;

    Teoricamente deve funcionar, porém não cheguei a testar...


    Herbert Lausmann

    • Marcado como Resposta Jhonas Nobre terça-feira, 15 de abril de 2014 19:26
    terça-feira, 15 de abril de 2014 14:29