将FrameworkElement.DataContext设置为匿名对象

时间:2012-06-16 13:04:36

标签: c# silverlight windows-phone-7 data-binding

我有这个网格,包含一个模板:

<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设计器,但无法在手机上正确绑定。

我需要做些什么来完成这项工作?

1 个答案:

答案 0 :(得分: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 };

让它发挥作用