我有一個ListBox
顯示一個List<Item> Items
與項目是一個自定義對象。每個項目我希望用戶看到一個ComboBox
與List<string> Options
作爲來源與所選項目綁定回項目屬性。在列表框中,我沒有綁定單個Item屬性的麻煩,但是如何返回DataContext以獲取我的選項列表?DataContext組合框在列表框中的綁定
視圖模型被設置爲頁面的DataContext的
class ViewModel
{
public ObservableCollection<string> Options { get; set; }
public ObservableCollection<Item> Items { get; set; }
}
的XAML
<ListBox x:Name="ItemsListBox" ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Height="50" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="ItemProperty1TB"
Text="{Binding Path=Property1, Mode=OneWay}"
Grid.Column="0"
/>
<ComboBox x:Name="OptionsCB"
SelectedItem ="{Binding ChosenOptions, Mode=TwoWay}"
ItemsSource="{Binding Path=DataContext.Options}"
Grid.Column="1"
PlaceholderText="Option"
/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我試着切出儘可能多的額外的代碼,並得到一個可讀的例子。
How to bind to a source inside a ListBox different from the ItemsSource already specified這使用不存在的AncestorType?
ComboBox inside Listbox.ItemTemplate Binding problem這綁定到一個靜態資源。我應該將選項放入靜態資源嗎?
ElementName
看起來很有希望,但我只有IDE建議元素作用域列表框裏面...... 不要相信的Visual Studio
我是不是要對此都錯了?
視圖模型需要有屬性,而不是字段。這是實際的代碼? –
沒有那不是實際的代碼我會快速改變 – JaredStroeb
嘗試'ItemsSource =「{綁定路徑= DataContext.Options,ElementName = ItemsListBox}」' –