绑定 ComboBox 项目源

发布于 2024-10-08 21:10:14 字数 1335 浏览 2 评论 0原文

DataGrid(它有它的ItemSource)中,我的行有一个ComboBox,我想将其ItemSource绑定到ViewModel 中的列表,但我不能。因为 DataContext 不是 ViewModel,有人有办法解决这个问题吗?

示例:

CilyCollectionStatusListViewModel 中的两个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只想待在家 2024-10-15 21:10:14

尝试使用相对源绑定

{Binding DataContext.StatusList, RelativeSource={RelativeSource  AncestorType={x:Type ItemsControl}}}

Try with relative source binding

{Binding DataContext.StatusList, RelativeSource={RelativeSource  AncestorType={x:Type ItemsControl}}}
怼怹恏 2024-10-15 21:10:14

您可以在 DataTemplate 中访问 CilyCollection 项。所以你可以绑定到城市的 Status 属性。 StatusList 不可访问。要绑定 StatusList 尝试:

<数据模板>>

< ComboBox ItemsSource="{Binding ElementName=LayoutRoot, Path=DataContext.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:

< DataTemplate >

< ComboBox ItemsSource="{Binding ElementName=LayoutRoot, Path=DataContext.StatusList}">

...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文