【发布时间】:2016-11-28 23:18:43
【问题描述】:
我不断收到以下错误消息:
System.Windows.Data 错误:40:BindingExpression 路径错误: 在“对象”“ManageTabViewModel”上找不到“TabToAdd”属性;目标 属性是“文本”(类型“字符串”)。
System.Windows.Data 错误:40:BindingExpression 路径错误: 在“对象”上找不到“TabbableViewModel”属性 “ManageTabsViewModel”。
BindingExpression:Path=TabbableViewModel;DataItem='ManageTabViewModel'; 目标元素是'TextBox'(名称='');目标属性是 “DataContext”(类型“对象”)。
每当我尝试将文本框绑定到视图模型时,都会发生这种情况。到目前为止,这是我的代码:
ManageTabsViewModel.xaml
<TextBox DataContext="{Binding TabbableViewModel}" Text="{Binding Path=TabsToAdd}" Width="250" HorizontalAlignment="Left" Margin="6,0,0,6"></TextBox>
ManageTabsViewModel.cs
public class TabbableViewModel: ITabbableViewModel, INotifyPropertyChanged
{
public ITabbable Tabbable {get; set};
public IEnumerable<ITabViewModel> Tabs { get; set }
private IEnumerable<string> _tabsToAdd;
public IEnumerable<string> TabsToAdd
{
get { return _tabsToAdd }
set
{
if(Equals(value, _tabsToAdd))
return;
_tabsToAdd = value
OnPropertyChanged("TabsToAdd");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public interface ITabbable
{
IEnumerable<string> TabsToAdd { get; set; }
}
public interface ITabbableViewModel
{
ITabbable Tabbable { get; set; }
}
public class ManageTabsViewModel : IManageTabsViewModel
{
public void SetTabbable(IEnumerable<ITabbable> tabbable)
{
TabbableItems = tabbable;
ExpandedTabbableItems = (from t in TabbableItems
from u in t.Tabs.DefaultIfEmpty()
select new TabbableViewModel()
{
Tabbable = t,
Tabs = t.Tabs,
TabsToAdd = t.TabsToAdd
}).ToArray();
}
public IEnumerable<ITabbableViewModel> ExpandedTabbableItems { get; set; }
public IEnumerable<ITabbable> TabbableItems { get; set; }
}
public interface IManageTabsViewModel
{
void SetTabbable(IEnumerable<ITabbable> tabbable);
IEnumerable<ITabbable> TabbableItems { get; }
IEnumerable<ITabbableViewModel> ExpandedTabbableItems { get; }
}
【问题讨论】:
标签: c#