【问题标题】:Bind Json data to TextBlock through C# code通过C#代码将Json数据绑定到TextBlock
【发布时间】:2014-05-20 23:08:38
【问题描述】:

我用 C# 代码制作我的文本块,我想将 JSON 数据绑定到它。此时我想这样做:

        if (actualStock == true)
        {
            TextBlock TBActualStock = new TextBlock();
            TBActualStock.Text = "Actuele voorraad: ";
            TBActualStock.FontSize = 18;
            STACKActualStockDeliverTime.Children.Insert(1, TBActualStock);

            TextBlock TBBindActualStock = new TextBlock();
            TBBindActualStock.Text = "{Binding ActualStock}"; //this is where it should bind
            TBBindActualStock.FontSize = 18;
            STACKActualStockDeliverTime2.Children.Insert(1, TBBindActualStock);
        }

这是我的 XAML 代码:

 DataContext="{Binding Item}"
    d:DataContext="{Binding Groups[0].Items[0]}">
    <Grid.ChildrenTransitions>
        <TransitionCollection>
            <EntranceThemeTransition/>
        </TransitionCollection>
    </Grid.ChildrenTransitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="140"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid.Background>
        <ImageBrush ImageSource="/Assets/BackGroundGAC.jpg" Stretch="UniformToFill"/>
    </Grid.Background>

    <Grid Grid.Row="1" x:Name="contentRegion">
        <StackPanel Orientation="Horizontal">
                <StackPanel Orientation="Horizontal">
                    <StackPanel x:Name="STACKActualStockDeliverTime">
                        <TextBlock x:Name="HEADERActualStockDeliverTime" FontSize="24" Text="Voorraad en levertijd"></TextBlock>     
                    </StackPanel>

                    <StackPanel  x:Name="STACKActualStockDeliverTime2">
                        <TextBlock x:Name="Headert" FontSize="24" Text=""></TextBlock>


                    </StackPanel>
                </StackPanel>

现在我想将 Json 数据添加到我在 C# 代码中创建的文本块中。我知道在 XAML 中我应该使用 {Binding description} //description is a part of my json object so that works 但如果我在 C# 代码中这样做,它只会将文本设置为 {Binding Description}

知道如何解决这个问题吗?

ps:我需要使用 C# 代码而不是 XAML。

【问题讨论】:

    标签: c# json xaml


    【解决方案1】:

    如果你在代码中绑定你不应该那样做,只需分配值

    TextBlock.Text Property

        TextBlock TBBindActualStock = new TextBlock();
        TBBindActualStock.Text =  ActualStock ; 
    

    如果要在代码中绑定,使用绑定操作,

    Binding binding = new Binding();
    binding.Path = new PropertyPath("ActualStock");
    binding.Source = sourceObject; 
    
    BindingOperations.SetBinding(TBBindActualStock, TextBlock.TextProperty, binding);
    

    引用自Binding String Property in Code-Behind TextBlock

    在 XAML 中,

        <TextBlock Text="{Binding ActualStock}
    

    【讨论】:

    • 好吧,如果我在 XAML 中创建一个文本块并说 {Binding ActualStock} 它将通过 XAML 代码绑定,我不希望那样。我应该为我的对象创建一个新实例以获得 ActualStock 吗?正如您在我上传的 XAML 文件中看到的那样,我将项目绑定到数据上下文。我应该在 C# 中做类似的事情吗?
    • 您应该为您的属性使用 INotifyPropertyChanged
    【解决方案2】:

    你可以像这样使用 Binding 类

    Binding myBinding = new Binding("ActualStock");
    myBinding.Source = myDataObject;//here is your data source.
    TBBindActualStock.SetBinding(TextBlock.TextProperty, myBinding);
    

    【讨论】:

    • 您的方向正确 :) 感谢您的帮助。查看差异的正确答案。
    猜你喜欢
    • 2017-08-15
    • 1970-01-01
    • 2018-11-24
    • 2010-10-03
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    相关资源
    最近更新 更多