2012-06-16 47 views
2

我有這樣的網格,包含一個模板:設置FrameworkElement.DataContext一個匿名對象

<Grid x:Name="Bar" Width="400"> 
    <Grid.Resources> 
     <DataTemplate x:Name="ScoreText"> 
      <Grid Grid.Column="{Binding Col}"> 
       <Rectangle Fill="Red"/> 
       <TextBlock Text="{Binding Value}" /> 
      </Grid> 
     </DataTemplate> 
    </Grid.Resources> 
</Grid 

我要插入的模板的實例爲含電網,Bar。以下是我在做什麼:

FrameworkElement item = (FrameworkElement) ScoreText.LoadContent(); 
item.DataContext = new { Col = 0, Value = 100 }; 
Bar.Children.Add(item); 

這在Visual Studio的XAML設計器中工作,但無法在手機上正確綁定。

我需要做些什麼來完成這項工作?

+0

你試過沒有使用匿名對象?通常情況下,我會定義一個類型的屬性http://msdn.microsoft.com/en-us/library/ms229614.aspx,然後將dataContex設置爲Grid http://msdn.microsoft.com/en-us/ library/ms742521.aspx –

+0

@lukas:定義一個簡單的類型並沒有幫助:'public struct Data {public int Col;公共字符串值; },儘管我現在意識到類型轉換可能很重要。現在它甚至不在設計師身上工作。將dataContex設置爲'Grid'意味着什麼?哪個網格? – Eric

回答

0

匿名類型不起作用,因爲只有屬性可以綁定到。添加:

public struct Data { 
    public int Col {get; set;} 
    public string Value {get; set;} 
} 

和不斷變化的

item.DataContext = new { Col = 0, Value = 100 }; 

item.DataContext = new Data { Col = 0, Value = 100 }; 

使得它的工作

+0

最好將它改爲課堂。可變的結構是邪惡的;) –