【问题标题】:How binding my ListBox correctly如何正确绑定我的 ListBox
【发布时间】:2014-11-05 13:05:47
【问题描述】:

我的 Windows Phone 应用程序有一个从集合 produtos 填充的 ListBox。此集合从 JSON 接收值。

在我的 ListBox 中,我“绑定”了 JSON 中的所有值(quantidade、descricao、valor_preco_a、codigo)和另一个应该是 produtos.quantidade * produtos.valor_preco_a 的值(unidade)。

我的列表框:

        <controls:PivotItem Header="Consulta" Name="consultaCartao">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
                <ListBox Name="List2" ItemsSource="{Binding produtosCartao}" HorizontalContentAlignment="Stretch" Grid.ColumnSpan="3" Margin="0,182,-66,0" Visibility="Collapsed">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Margin="0,0,0,17" Width="432" Height="Auto">
                                <StackPanel.Background>
                                    <SolidColorBrush Color="#FFE8FF00" Opacity="0.2"/>
                                </StackPanel.Background>
                                <TextBlock Grid.Column="0" Text="{Binding descricao}" TextWrapping="Wrap" Style="{StaticResource PhoneTextNormalStyle}"/>
                                <TextBlock Grid.Column="3" TextWrapping="Wrap" Style="{StaticResource PhoneTextSubtleStyle}" Margin="20,5,12,0">
                                    <Run Text="{Binding quantidade}" />
                                    <Run Text="{Binding unidade}" />
                                </TextBlock>
                                <TextBlock Grid.Column="3" Text="{Binding valor, ConverterCulture=pt-BR, StringFormat=C2}" TextWrapping="Wrap" Style="{StaticResource PhoneTextNormalStyle}" Margin="300,-30,12,0"/>
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

我尝试使用此代码:

public ObservableCollection<produtos> produtosCartao { get; set; }

    public class produtos
    {

        public double quantidade { get; set; }
        public string descricao { get; set; }
        public double valor_preco_a { get; set; }
        public string codigo { get; set; }
        public string unidade { get; set; }
        public double valor { get; set; }
    }

void webClient_DownloadStringCompletedProdutos(object sender, DownloadStringCompletedEventArgs e)
    {
      produtos produto = new produtos();
      produto.valor = produto.valor_preco_a * produto.quantidade;
    }

【问题讨论】:

    标签: c# xaml data-binding listbox windows-phone


    【解决方案1】:

    为了使用 XAML 中的数据绑定,您必须在列表框中设置 DataContext 属性。

    DataContext 属性是 xaml 引擎查找绑定值的对象。

    你应该看看this

    【讨论】:

    • 数据绑定正常。但是produtos.value 必须是其他两个值的连接。所以,在我的代码中,我必须做produto.valor = produto.valor_preco_a * produto.quantidade
    • 是的,我明白了,但连接点应该不会成为绑定问题。那么你的问题是什么?值不显示?
    • 显示的值为 0,00。但我知道这些值不是 0。
    • 好的,请尝试像我之前所说的那样设置 DataContext。我认为这是问题所在。
    • 很好,问题出在 DataContext 上。它现在对我来说很好。谢谢兄弟
    猜你喜欢
    • 2011-04-21
    • 1970-01-01
    • 2011-05-05
    • 2015-08-27
    • 2011-12-29
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多