2014-04-08 2 views
0

C# 코드로 TextBlock을 만들고 JSON 데이터를 바인딩하려고합니다. 지금이 순간 내가 이런 식으로하고 싶지 :C# 코드를 통해 TextBlock에 Json 데이터 바인딩

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> 

지금 내가 C# 코드에서 만들어 된 본체에 JSON 데이터를 추가합니다 : 이것은 내 XAML 코드는

 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에서 {바인딩 설명}을 사용해야합니다. //description is a part of my json object so that works하지만 C# 코드에서이 작업을 수행하면 텍스트가 {바인딩 설명}으로 설정됩니다.

이 문제를 어떻게 해결할 수 있습니까?

ps : XAML이 아닌 C# 코드로 수행해야합니다.

답변

0

당신이 그런 일을하지 않아야 코드에서 바인딩하는 경우이 작업을 바인딩을 사용, 코드에 바인드하려는 경우, 그냥 값

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 내가 XAML에서 TextBlock을 할 경우,

<TextBlock Text="{Binding ActualStock} 
+0

처럼 바인딩 클래스를 사용하고 XAML 코드를 통해 바인딩 {ActualStock 바인딩}라고하고, 내가하지 않습니다 그걸 원해. ActualStock을 얻기 위해 내 물건의 새 인스턴스를 만들어야합니까? 업로드 한 XAML 파일에서 볼 수 있듯이 Items를 datacontext에 바인딩합니다. C#에서 비슷한 작업을해야합니까? – Proliges

+0

속성 – Sajeetharan

+0

에 대해 INotifyPropertyChanged를 사용해야합니다. 감사합니다. 이것은 정답입니다. – Proliges

0

당신은 그럼이

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

당신은 올바른 방향입니다 :) 당신의 도움에 감사드립니다. 차이점에 대한 정답을 살펴보십시오. – Proliges

관련 문제