【问题标题】:binding ComboBox item source绑定 ComboBox 项源
【发布时间】:2010-12-22 07:15:19
【问题描述】:

在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>

【问题讨论】:

  • 在此处放置一些示例代码/XAML 将有助于更好地理解您的问题。
  • @decyclone :我的代码就像现在有问题的示例。

标签: c# silverlight xaml mvvm


【解决方案1】:

尝试使用相对源绑定

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

【讨论】:

    【解决方案2】:

    您可以在 DataTemplate 中访问 CilyCollection 项目。所以你可以绑定到城市的状态属性。无法访问状态列表。要绑定 StatusList,请尝试:

    ...

    【讨论】:

    • +1 因为基本思想已经到达那里。但是路径应该是 Path=DataContext.StatusList
    猜你喜欢
    • 2010-11-09
    • 2013-10-21
    • 2020-10-10
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多