在我的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中做到这一点;我必须在代码隐藏中设置绑定。
答案 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);
}