WPF标记在其他命名空间中看不到类型

WPF标记在其他命名空间中看不到类型,wpf,data-binding,namespaces,Wpf,Data Binding,Namespaces,我相信对于那些有WPF数据绑定经验的人来说,这是一个非常难懂的问题,但我是一个难懂的人。因此,提前道歉: 我正在尝试将对象集合(IEnumerable)绑定到列表框,如下所示。问题是,当我的LogEntry类型与我的“codebehind”位于同一命名空间(ActivityLog)中时,我可以看到listbox中呈现的对象属性。 然而;当LogEntry类型位于不同的命名空间(ActivityLog.Classes)中时,列表框中不会显示任何内容 我已经尝试在xaml标记(xmlns:local

我相信对于那些有WPF数据绑定经验的人来说,这是一个非常难懂的问题,但我是一个难懂的人。因此,提前道歉:

我正在尝试将对象集合(IEnumerable)绑定到列表框,如下所示。问题是,当我的LogEntry类型与我的“codebehind”位于同一命名空间(ActivityLog)中时,我可以看到listbox中呈现的对象属性。 然而;当LogEntry类型位于不同的命名空间(ActivityLog.Classes)中时,列表框中不会显示任何内容

我已经尝试在xaml标记(xmlns:local=“clr namespace:ActivityLog.Classes”)中添加ActivityLog.Classes名称空间,但我肯定还缺少一些额外的步骤

请帮忙

namespace ActivityLog
{
    public partial class LogPage : Window
    {
        public LogPage()
        {
            InitializeComponent();
            List<LogEntry> leList = new List<LogEntry>() {  new LogEntry() { StartDate=DateTime.Parse("2011-05-10 9:58:00"), ActivityDescription="Three" + Environment.NewLine},  
                                                            new LogEntry() { StartDate=DateTime.Parse("2011-05-10 9:58:00"), ActivityDescription="Four" + Environment.NewLine}};
            this.lstBox.ItemsSource = leList;
        }
    }

    public class LogEntry
    {
        public DateTime StartDate { get; set; }
        public string ActivityDescription { get; set; }
    }
}
命名空间活动日志
{
公共部分类日志页:窗口
{
公共日志页()
{
初始化组件();
List leList=new List(){new LogEntry(){StartDate=DateTime.Parse(“2011-05-10 9:58:00”),ActivityDescription=“Three”+Environment.NewLine},
newlogentry(){StartDate=DateTime.Parse(“2011-05-10 9:58:00”),ActivityDescription=“Four”+Environment.NewLine};
this.lstBox.ItemsSource=leList;
}
}
公共类日志条目
{
公共日期时间起始日期{get;set;}
公共字符串ActivityDescription{get;set;}
}
}

您正在设置列表框的ItemSource两次。一次在你的代码背后

this.lstBox.ItemsSource = leList;
然后再次在您的xaml中

ItemsSource="{Binding}"
在提供的示例中,只有codebehind版本是正确的,您应该删除xaml版本

您的xaml版本实际上绑定到日志页的DataContext属性,因此,如果您希望以这种方式连接它,则应该设置codebehind

this.DataContext = leList;

绑定文本框的行应显示:

Text="{Binding Path=(local:StartDate)}"
Text="{Binding Path=(local:ActivityDescription)}"

请在滥用代码之前阅读。抱歉。正在尝试格式化它。如果不知道您正在做什么,请停止它。确认ItemSource=“{Binding}”是多余的。但是,如果LogEntry类位于不同的名称空间(而不是codebehind类),那么listbox仍然不会呈现任何项。这不是我的经验,因此您还有其他事情要做。那么,删除xaml并没有解决它?不。即使将LogEntry类封装在不同的名称空间中,您的工作正常吗?在最初的示例中,它与codebehind类(即:ActivityLog)位于相同的空间中,因此它应该按原样工作。但将LogEntry放入一个单独/不同的名称空间(例如:ActivityLog.Classes)对我来说是一个中断,并且在列表框中没有显示任何内容。是的,它在这里工作,我将您的代码拷贝到一个新项目中,按原样工作。将LogEntry移动到一个新的命名空间中,它继续工作。