DataGrid里有几个ComBobox列 而且具有连动效果 怎样实现

cgxf 2014-09-09 03:39:42
问题如标题
举个例子
<DataGrid ItemsSource="{Binding AddressList}" >
<DataGridTemplateColumn Header="Country">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding CountryList ........./>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="City">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding CityList ........./>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGrid>
就是当选择第二条记录里的Country国家变更时候,
第二条记录的City对应的ComboBox 里选择项只有相对应国家的LIst存在。而且在Country国家变更同时City对应的值清空,并且刷新画面[我做的结果是后台City值清空了。但是画面没有刷新。当光标移到DataGrid别的行的时候才在画面上看到刷新效果]。

上边问题如何解决阿!期待中!
...全文
350 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjq 2014-09-16
  • 打赏
  • 举报
回复
数据源都绑定到ObservableCollection类型的列表,combobox的selecteditem绑定到某个实体类的相应属性上。在实体类的相应属性的set{}中,添加逻辑,修改相应的ObservableCollection列表。(不能new新的,要在原有列表中clear后add)
Veary 2014-09-10
  • 打赏
  • 举报
回复
第一个ComboBox值改变事件中 把 当前的选中项传到第二个ComboBox的查询方法中 作为条件,在返回List查询结果 顺便给第二个ComboBox绑定上就ok 如果有更多的话 就依次向下写....
全国话费充值 2014-09-09
  • 打赏
  • 举报
回复
private T GetVisualChild<T>(Visual parent) where T : Visual { T child = default(T); int numVisuals = VisualTreeHelper.GetChildrenCount(parent); for (int i = 0; i < numVisuals; i++) { Visual v = (Visual)VisualTreeHelper.GetChild(parent, i); child = v as T; if (child == null) { child = GetVisualChild<T> (v); } if (child != null) { break; } } return child; }
全国话费充值 2014-09-09
  • 打赏
  • 举报
回复
DataGridRow _row= dataGrid1.ItemContainerGenerator.ContainerFromItem(dataGrid1.SelectedItem) as DataGridRow; DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(_row); cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(列序号); TextBlock _kdgstextblock = GetVisualChild<TextBlock>(cell); _bindingexpression = _kdgstextblock.GetBindingExpression(TextBlock.TextProperty); _bindingexpression.UpdateTarget();
灬浪子灬 2014-09-09
  • 打赏
  • 举报
回复
引用 楼主 cgxf 的回复:
问题如标题 举个例子 <DataGrid ItemsSource="{Binding AddressList}" > <DataGridTemplateColumn Header="Country"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ComboBox ItemsSource="{Binding CountryList ........./> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumn Header="City"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ComboBox ItemsSource="{Binding CityList ........./> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGrid> 就是当选择第二条记录里的Country国家变更时候, 第二条记录的City对应的ComboBox 里选择项只有相对应国家的LIst存在。而且在Country国家变更同时City对应的值清空,并且刷新画面[我做的结果是后台City值清空了。但是画面没有刷新。当光标移到DataGrid别的行的时候才在画面上看到刷新效果]。 上边问题如何解决阿!期待中!
双向绑定 添加属性改变事件

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧