3
我有一個這個模型(它不是實際的代碼,我爲了清晰起見省略了INotifyPropertyChanged實現)。Wpf主詳細列表視圖綁定
public class Project
{
public ObservableCollection<Component> Components { get; set; }
}
public class Component
{
public ObservableCollection<Item> Items { get; set; }
}
public class Item
{
public LookupItem LookupItem { get; set; }
}
而且這是在ViewModel
public class ViewModel
{
public Project Project { get; set; }
public Components { get { return Project.Components; } }
public ObservableCollection<LookupItem> LookupItems { get; set; }
}
在視圖我有兩個列表視圖一個示出的組件和其它綁定到表示selecte元器件的物品的第一個。後者的listview應該有任何Item的組合框來改變lookupitem,但是我不能綁定它。
這是XAML
<ListView x:Name="list" ItemsSource="{Binding Components}">
......
</LIstView>
,後者
<ListView ItemsSource="{Binding Items}" DataContext="{Binding SelectedItem, ElementName=list}">
....
<GridViewColumn Width="140">
<GridViewColumnHeader Tag="Publisher" Content="Item" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch">
<ComboBox SelectedItem="{Binding Path=Item}" ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:ViewModel}}, Path=LookupItems, Mode=TwoWay }" DisplayMemberPath="Name" />
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
我不能讓組合框填入。 Wpf給我的錯誤
System.Windows.Data Error: 4 : Cannot find source for binding with
reference 'RelativeSource FindAncestor, AncestorType='Projectname.ViewModels.ViewModel', AncestorLevel='1''. BindingExpression:Path=LookupItems; DataItem=null; target element is 'ComboBox' (Name=''); target property is 'ItemsSource' (type 'IEnumerable')
哇!好的一個,它的工作原理!你節省了我的一天;) –