Wpf 更多绑定到ListView
原来的问题就在这里。 我已经修复了一个问题,现在可以看到列名了。然而,我无法理解绑定 输出窗口中的错误:Wpf 更多绑定到ListView,wpf,xaml,Wpf,Xaml,原来的问题就在这里。 我已经修复了一个问题,现在可以看到列名了。然而,我无法理解绑定 输出窗口中的错误: System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=This'. BindingExpression:Path=LogView.LogEntries; DataItem=null; target element is 'ListView' (Name='Lo
System.Windows.Data Error: 4 : Cannot find source for binding with reference
'ElementName=This'. BindingExpression:Path=LogView.LogEntries; DataItem=null; target
element is 'ListView' (Name='LoggingListView'); target property is 'ItemsSource' (type 'IEnumerable')
来自LogFileWindow.XAML的最新尝试的XAML片段。我可以发布更多信息,但尽量减少混乱:
<ListView Name="LoggingListView" ItemsSource="{Binding ElementName=This, Path=LogView.LogEntries} ">
<ListView.View>
<GridView>
<GridViewColumn Header="Date" DisplayMemberBinding="{Binding Path=Date}"></GridViewColumn>
<GridViewColumn Header="Time" DisplayMemberBinding="{Binding Path=Time}"></GridViewColumn>
<GridViewColumn Header="Event" DisplayMemberBinding="{Binding Path=Event}"></GridViewColumn>
</GridView>
</ListView.View>
</ListView>
}Visual Studio的错误是不言而喻的:您试图使用ElementName进行绑定,并使用Name=“This”搜索可视元素(假定在XAML可视树中定义)。没有这样的事情(显然,我说不出来,因为你没有发布完整的XAML树)
如果要将一个可视元素属性绑定到同一元素中的另一个属性,您可以使用,问题是…?为什么绑定不起作用。如果它是工作,为什么我会张贴此请求帮助?“我有一个零件在工作”和“我弄不懂装订”这两个词不足以解释这个问题吗?谢谢。我认为“This”是指窗口本身的关键字。
public class LogEntryViewModel : INotifyPropertyChanged
{
public LogEntryViewModel(LogFileEntry le)
{
_date = le.Date;
_time = le.Time;
_event = le.Event;
}
#region Members
private string _date;
public string Date
{
get { return _date; }
set {_date = value;
RaisePropertyChanged("Date");
}
}
private string _time;
public string Time
{
get { return _time; }
set
{
_time = value;
RaisePropertyChanged("Time");
}
}
private string _event;
public string Event
{
get { return _event; }
set { _event = value;
RaisePropertyChanged("Event");
}
}
private LogFileEntry _le;
#endregion
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
private void RaisePropertyChanged(string propertyName)
{
// take a copy to prevent thread issues
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
public class LogViewModel :ObservableCollection<LogEntryViewModel>
{
private ObservableCollection<LogEntryViewModel> _LogEntries;
public ObservableCollection<LogEntryViewModel> LogEntries = new
ObservableCollection<LogEntryViewModel>();
}
public partial class LogFileWindow : Window
{
public LogViewModel LogView = new LogViewModel();