C# 装订让我发疯

C# 装订让我发疯,c#,silverlight,xaml,data-binding,inotifypropertychanged,C#,Silverlight,Xaml,Data Binding,Inotifypropertychanged,编辑: XAML: <TextBlock Text="{Binding Path=CurrentShows}" Grid.Row="1"/> <TextBlock Text="{Binding Path=CurrentShows.Today}" Grid.Row="1"/> XAML: <TextBlock Text="{Binding Path=CurrentShows}" Grid.Row="1"/> <TextBlock Text="{

编辑:

XAML:

<TextBlock Text="{Binding Path=CurrentShows}"  Grid.Row="1"/>
<TextBlock Text="{Binding Path=CurrentShows.Today}"  Grid.Row="1"/>
XAML:

<TextBlock Text="{Binding Path=CurrentShows}"  Grid.Row="1"/>
<TextBlock Text="{Binding Path=CurrentShows.Today}"  Grid.Row="1"/>
附表1.cs

[XmlRoot]
    public class schedule : INotifyPropertyChanged 
    {
        public event PropertyChangedEventHandler PropertyChanged;


        DayCollection today;
        [XmlElement("DAY")]
        public DayCollection Today
        {
            set
            {
                if (today != value)
                {
                    today = value;
                    OnPropertyChanged("Today");

                }
            }
            get
            {
                return today;
            }
        }

        private void OnPropertyChanged(string p)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(p));
        }

    }
DayCollection.cs

    public class DayCollection : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        ObservableCollection<TimeCollection> timecol;
        [XmlElement("time")]
        public ObservableCollection<TimeCollection> TimeCol
        {
            set
            {
                if (timecol != value)
                {
                    timecol = value;
                    OnPropertyChanged("TimeCol");

                }
            }
            get
            {
                return timecol;
            }
        }

        string date;
        [XmlAttribute(AttributeName = "attr")]
        public string Date
        {
            set 
            {
                if (date != value)
                {
                    date = value;
                    OnPropertyChanged("Date");

                }
            }
            get
            {
                return date;
            }
        }

        private void OnPropertyChanged(string p)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(p));
        }

    }
公共类DayCollection:INotifyPropertyChanged
{
公共事件属性更改事件处理程序属性更改;
可观察采集时间;
[XmlElement(“时间”)]
公共可观测收集时间
{
设置
{
if(timecol!=值)
{
timecol=值;
OnPropertyChanged(“TimeCol”);
}
}
得到
{
返回时间列;
}
}
字符串日期;
[XmlAttribute(AttributeName=“attr”)]
公共字符串日期
{
设置
{
如果(日期!=值)
{
日期=价值;
不动产变更(“日期”);
}
}
得到
{
返回日期;
}
}
私有void OnPropertyChanged(字符串p)
{
if(PropertyChanged!=null)
房地产变更(这是新的房地产变更发展(p));
}
}
我试图在Xaml中显示字符串属性“Date”。 但我只是没有得到任何解决办法


我非常感谢您的帮助,提前谢谢

我已将您的代码复制到一个项目中,如果您使用这一行设置TextBlock的绑定,它就会起作用

<TextBlock Text="{Binding Today.Date}"  Grid.Row="1"/>
其中LayoutRoot是TextBlock的父级,即

<Grid x:Name="LayoutRoot">
 <TextBlock Text="{Binding Today.Date}"/> 
</Grid>


您需要做的第一件事是为数据绑定打开调试消息:接下来,重新运行并检查输出窗口,看看有哪些错误。这不是标准的吗?好吧,我再次检查,并把他们甚至在错误和它的jsut编译罚款。没有错误,没有警告,没有任何内容。没有,编译时没有,运行时也没有。即使运行程序,也不会出现任何内容。只是为了提供一些xaml代码<代码>Lasttextblock已正确填充,上面的内容不会显示任何内容。我可以保证,如果您的绑定有问题,则会在调试时报告,如果您的选项设置如图中所示。所以要么你的问题在别处(最有可能),要么你的VS安装不好(可能性要小得多)。首先要做的是关闭并重新启动VS,然后重试。
currentshows = new schedule();
currentshows.Today = new DayCollection();
currentshows.Today.Date = "hallo";
LayoutRoot.DataContext = currentshows;
<Grid x:Name="LayoutRoot">
 <TextBlock Text="{Binding Today.Date}"/> 
</Grid>