C# 将类成员的多个实例数据绑定到特定标签
我有一个类,它有另一个类的私有成员,而该类是另一个类的可观察集合。。这是我需要信息的类,它有我想要数据绑定的私有成员C# 将类成员的多个实例数据绑定到特定标签,c#,wpf,data-binding,C#,Wpf,Data Binding,我有一个类,它有另一个类的私有成员,而该类是另一个类的可观察集合。。这是我需要信息的类,它有我想要数据绑定的私有成员 private readonly NflGameCollection _games; .... class NflGameCollection : ObservableCollectionEx<NflGameStatus> {... class NflGameStatus : INotifyPropertyChanged { //***th
private readonly NflGameCollection _games;
....
class NflGameCollection : ObservableCollectionEx<NflGameStatus>
{...
class NflGameStatus : INotifyPropertyChanged
{
//***these are the members i want databound***
private readonly string _homeTri;
private readonly string _awayTri;
private string _homeScore;
private string _awayScore;
我怎样才能得到这样的结果,如果hometri和awaytri都和我想要的一样。。。我可以得到该类的其他实例吗?比如说
if item.HomeTri==what i want && item.AwayTri==what i want
then bind item._homeScore to a certain label
then bind item.awayAScore to a certain label.
我知道我的要求有点复杂。。但我在这里有点绝望,希望能得到任何帮助。这种数据绑定对我来说是非常新的,我很难掌握它。这可能吗?我越是研究,我就越不这么认为。。但我希望我不是。感谢您的帮助我的建议是您将控件的DataContext设置为要显示的游戏:
<StackPanel DataContext="{Binding SelectedGame}">
<Label Content="{Binding HomeScoreText}" />
<Label Content="{Binding AwayScoreText}" />
</StackPanel>
然后需要在ViewModel上公开公共属性,如下所示:
class NflGameStatus
{
private readonly string _homeTri;
private readonly string _awayTri;
private string _homeScore;
private string _awayScore;
public String HomeScoreText
{
get
{
return _homeScore;
}
}
public String AwayScoreText
{
get
{
return _awayScore;
}
}
}
private NflGameStatus _selectedGame;
public NflGameStatus SelectedGame
{
get
{
return _selectedGame;
}
set
{
_selectedGame = value;
RaisePropertyChanged("SelectedGame");
}
}
现在,当您设置SelectedName属性时,它将自动更新这些字段。所以只要检查一下:
if item.HomeTri==what i want && item.AwayTri==what i want
SelectedGame = item;
干杯,
Eric您需要将选项卡控件绑定到一组ViewModels,每个游戏一个:
<TabControl x:Name="_tabControl" ItemsSource="{Binding GameModels}">
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="Header" Value="{Binding GameTitle}"/>
<Setter Property="Content" Value="{Binding GameContent}"/>
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
每个nflgamcontent
可能看起来像:
public class NflGame : ViewModelBase
{
public String GameTitle;
public NflGameContent GameContent;
}
public class NflGameContent : ViewModelBase
{
private Thread _worker;
public NflGameContent(int gameID){
_worker = new Thread(() => UpdateScores(gameID));
_worker.Start();
}
private UpdateScores(gameID){
var appController = new DtvGsisDataParser.AppController(); //Or whatever -- you get the idea
HomeScoreText = appController.GetHomeScore(gameID);
AwayScoreText = appController.GetAwayScore(gameID);
OnPropertyChanged("HomeScoreText");
OnPropertyChanged("AwayScoreText");
}
public String HomeScoreText;
public String AwayScoreText;
}
当然,您的XAML将绑定到NflGameContent并接收有关PropertyChanged的更新:
<TextBlock Text="{Binding HomeScoreText}">
是否每次都要将值绑定到相同的标签?或者您想根据某些逻辑绑定到不同的标签?我想绑定动态创建的标签,这些标签依赖于该类的homeTri和awayTri。但会有多个homeTri和awayTri的实例,我只知道如何通过foreach语句访问它们。。。如果这回答了你的问题,请告诉我。如果我搞不懂的话。。我想我得做一个计时器,每隔1秒或者别的什么时间更新一下标签。我想我还是不明白你想在UI中显示什么。你能详细说明一下视觉效果是什么吗?当然,让我拍一张屏幕快照,第一张图片是它在我的xaml中的外观。。。然后,当我运行它时(第二张图),当它在加载时从SQL数据库读取所有信息时,它看起来是正确的(TabControl上的所有内容都是动态创建的)。现在是每场比赛的分数和时间。。我需要更新到“实时”游戏时钟和分数,它来自不同的程序,根据homeTri和awayTri实时更新到每个适当的选项卡。这有意义吗?如果没有,请告诉我我想我知道我需要做什么。。非常感谢你。。我会回到这一点上。我可能有一两个问题,所以请回头看看--非常有趣。非常感谢你的帮助。。我目前正在研究如何根据您编写的内容实现此功能。tyvm对于此处的此部分:“”。。由于我正在动态创建标签(例如:team1ScoreLabel=new Label();_grid.Children.Add(team1ScoreLabel);)。。。我怎么能做与你在那行中粘贴的WPF相同的C#?我想我知道怎么做,除了那个part@user1189352为什么要动态添加子项?我最初就是这样编码的。。。。不幸的是,我在这方面有一个最后期限(老板不在乎我怎么做,只是完成这类事情),学习WPF/数据绑定的正确方法和重新编写代码将花费太多时间。。不幸的是,我不得不使用我不理解的=Twhoops,我的意思是我动态地创建了所有东西,因为它只根据我正在阅读的SQL数据库的方式创建标签和对象
<TextBlock Text="{Binding HomeScoreText}">