绑定 ComboBox 项目源
在DataGrid
(它有它的ItemSource
)中,我的行有一个ComboBox
,我想将其ItemSource
绑定到ViewModel
中的列表,但我不能。因为 DataContext
不是 ViewModel
,有人有办法解决这个问题吗?
示例:
CilyCollection
和 StatusList
是 ViewModel
中的两个 List。每个城市都有一个 Status
属性。
<Grid x:Name="LayoutRoot" DataContext="ViewModel">
<sdk:DataGrid Grid.Row="1"
AutoGenerateColumns="False"
ItemsSource="{Binding CityCollection}">
<Controls:DataGrid.Columns>
<Controls:DataGridTemplateColumn Header="Status">
<Controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding StatusList}"
Margin="2"
SelectedItem="{Binding status,Mode=TwoWay}"
ItemTemplate="{StaticResource StatusTemplate}" />
</DataTemplate>
</Controls:DataGridTemplateColumn.CellTemplate>
</Controls:DataGridTemplateColumn>
</Controls:DataGrid.Columns>
</sdk:DataGrid>
</Grid>
In a DataGrid
(it has its ItemSource
) my rows has a ComboBox
and i want to bind its ItemSource
to a list in ViewModel
, but i can't. because the DataContext
is not ViewModel
, any one have idea to solve this problem?
sample :
CilyCollection
and StatusList
are two List in ViewModel
. and each city has a Status
property.
<Grid x:Name="LayoutRoot" DataContext="ViewModel">
<sdk:DataGrid Grid.Row="1"
AutoGenerateColumns="False"
ItemsSource="{Binding CityCollection}">
<Controls:DataGrid.Columns>
<Controls:DataGridTemplateColumn Header="Status">
<Controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding StatusList}"
Margin="2"
SelectedItem="{Binding status,Mode=TwoWay}"
ItemTemplate="{StaticResource StatusTemplate}" />
</DataTemplate>
</Controls:DataGridTemplateColumn.CellTemplate>
</Controls:DataGridTemplateColumn>
</Controls:DataGrid.Columns>
</sdk:DataGrid>
</Grid>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试使用相对源绑定
Try with relative source binding
您可以在 DataTemplate 中访问 CilyCollection 项。所以你可以绑定到城市的 Status 属性。 StatusList 不可访问。要绑定 StatusList 尝试:
You have access in your DataTemplate to CilyCollection item. So you can bind to Status property of city. StatusList is not accessible. To bind StatusList try that: