【发布时间】:2012-04-21 21:18:18
【问题描述】:
我在 WPF MVVM 应用程序中有一个类,我想在弹出表单中显示它并管理它的一些成员。
public class Route
{
public string Name { get; set; }
public List<RouteSegment> MandatorySegments { get; set; }
}
public class RouteSegment
{
public decimal Id { get; set; }
public string Name { get; set; }
}
我只添加了几个成员字段,其余的不相关。
我想做的是将MandatorySegments 列表中的所有项目显示在数据网格的组合框中,以便我可以轻松添加和删除新成员。
这是我目前的代码:
在我的视图模型中
public RouteTest SelectedRoute { get; set; }
public ObservableCollection<RouteSegment> AllRouteSegments { get; private set; }
public RouteSegment SelectedMandatorySegment { get; set; }
在我看来
<DataGrid Grid.RowSpan="2"
AutoGenerateColumns="False" HorizontalAlignment="Left" Margin="5,6,0,5" Name="dgMandatorySegments" VerticalAlignment="Stretch" Width="306"
ItemsSource="{Binding SelectedRouteTest.MandatorySegments, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" CanUserResizeRows="False" CanUserSortColumns="False" CanUserResizeColumns="False" CanUserReorderColumns="False"
CanUserAddRows="{StaticResource False}" SelectionMode="Single" SelectedItem="{Binding SelectedMandatorySegment, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Route Segment">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.AllRouteSegments, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"
ItemTemplate="{StaticResource CboxItemTemplate}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
我缺少的是模板网格列中组合框上的SelectedValue 或SelectedItem。现在,在网格中,我的行数与列表中的元素相同,并且组合框的 ItemsSource 正确绑定,因为我可以从所有 RouteSegment 元素中进行选择。但是对于数据网格中的所有行,初始值始终为空。
组合框的SelectedValue 应该绑定什么?
【问题讨论】:
标签: wpf mvvm datagrid combobox