如何从代码隐藏绑定到类的属性?

时间:2014-01-04 15:18:40

标签: c# windows-8 windows-runtime

在我的XAML中我有这个:

<TextBlock Text="{Binding Stats.Scores.Team}" Style="{StaticResource Column_Value_Large}" />

我需要能够在代码隐藏中完整地创建TextBlock。这就是我所拥有的:

foreach (var Stats in player){
    var columnHeaderScore = new TextBlock
    {
        Style = Application.Current.Resources["Column_Value_Large"] as Style,
    };
    columnHeaderScore.SetBinding(TextBlock.TextProperty, new Binding
    {
        Path = new PropertyPath("Stats.Scores.Team"),
    });
    columnHeaderStackPanel.Children.Add(columnHeaderScore);
}

但是,绑定似乎不起作用。在代码隐藏中设置绑定的适当方法是什么?

编辑上下文:我的目标是在代码隐藏中的一个大循环中生成一堆这些文本框。请参阅上面的修订示例,该示例现在显示循环。既然我想这样做,我认为我不可能在XAML中做到这一点;我必须在代码隐藏中设置绑定。

2 个答案:

答案 0 :(得分:0)

我认为你以错误的方式使用xaml。为什么要t you set the TextBlock in the XAML code and bind its可见性to a property or use a样式. Then you don必须在代码隐藏中创建绑定。 编辑:为什么不使用ItemPanel或类似的东西来绑定你的集合并给它一个显示TextBoxes的DataTemplate?

答案 1 :(得分:0)

我明白了。

我的问题是在SetBinding中使用“Path”而不是“Source”。工作代码如下所示:

foreach (var Stats in player){
var columnHeaderScore = new TextBlock
{
    Style = Application.Current.Resources["Column_Value_Large"] as Style,
};
columnHeaderScore.SetBinding(TextBlock.TextProperty, new Binding
{
    Source = Stats.Scores.Team,
});
columnHeaderStackPanel.Children.Add(columnHeaderScore);

}