安心海叶 发表于 2016-11-7 09:55:18

Alice 发表于 2016-11-4 18:05
ComboBox这个是微软的控件,它本身提供了SelectedIndex属性可以设置默认的选择的项目。
我不太理解什么 ...

列是没有SelectIndex属性。

但是,我重新定义了ColumnHeader的模板,每一列的Header由Combox和TextBlock组成。所以,对于DataGrid的一列,我需要初始化时,设置Combox选择的Index,该如何设置?

Alice 发表于 2016-11-7 10:21:35

安心海叶 发表于 2016-11-7 09:55
列是没有SelectIndex属性。

但是,我重新定义了ColumnHeader的模板,每一列的Header由Combox和TextBlo ...

很抱歉我理解不了你的意思,你发个Demo过来我帮你看看。

安心海叶 发表于 2016-11-8 11:36:53

Alice 发表于 2016-11-4 18:05
ComboBox这个是微软的控件,它本身提供了SelectedIndex属性可以设置默认的选择的项目。
我不太理解什么 ...

您好!

存在的问题是:

1、DataGrid每一列,如何设置Combox选中的Index?

2、当Combox的索引改变时,如何更新DataGrid当前列?

3、自定义的Combox该如何设置为DataGrid的内嵌的样式,就是点击Header的时候,才出现Combox的ToggleButton?




安心海叶 发表于 2016-11-8 16:54:41

Alice 发表于 2016-11-7 10:21
很抱歉我理解不了你的意思,你发个Demo过来我帮你看看。

请问有测试结果吗?

安心海叶 发表于 2016-11-8 16:54:43

Alice 发表于 2016-11-7 10:21
很抱歉我理解不了你的意思,你发个Demo过来我帮你看看。

请问有测试结果吗?

Alice 发表于 2016-11-8 17:54:45

安心海叶 发表于 2016-11-8 11:36
您好!

存在的问题是:


谢谢您提供的Demo。问题收到了,正在做测试,测试后给您回复。

Alice 发表于 2016-11-9 09:55:38

安心海叶 发表于 2016-11-8 11:36
您好!

存在的问题是:


从你的描述来看,你说的都是逻辑上的问题。
测试了你的Deom,我来梳理下你的问题:
在C1DataGrid的ColumnHeader上放了ComboBox控件。
在运行时选择ComboBox之后,要根据相应的SelectedIndex,更改对应列的值?
这里我疑惑:
1你的三列分别绑定Time/VO2/VCO2,ComboBox的下拉框里是Time/VO2/VCO2。
你选择了后,你期望改变对应列的的每个单元格的值变成什么?

在ComboBox_SelectionChanged事件里,就可以拿到SelectedIndex的值。通常数据绑定的情况下,单元格的值是由数据源决定的,并且影响数据源。看不出ComboBox和数据源的值有什么关系。

安心海叶 发表于 2016-11-9 10:31:40

Alice 发表于 2016-11-9 09:55
从你的描述来看,你说的都是逻辑上的问题。
测试了你的Deom,我来梳理下你的问题:
在C1DataGrid的Colu ...

谢谢你的回复~

1、三列分别绑定Time/VO2/VCO2,ComboBox的下拉框里是Time/VO2/VCO2。
你选择了后,你期望改变对应列的每个单元格的值变成相应属性的值。例如,改变为VO2,那么当前列的值就是500-100的值;

2、ComboBox_SelectionChanged事件是可以拿到SelectedIndex,但是不知道哪个Combox属于DattGrid的哪一列?

安心海叶 发表于 2016-11-9 10:31:48

Alice 发表于 2016-11-9 09:55
从你的描述来看,你说的都是逻辑上的问题。
测试了你的Deom,我来梳理下你的问题:
在C1DataGrid的Colu ...

谢谢你的回复~

1、三列分别绑定Time/VO2/VCO2,ComboBox的下拉框里是Time/VO2/VCO2。
你选择了后,你期望改变对应列的每个单元格的值变成相应属性的值。例如,改变为VO2,那么当前列的值就是500-100的值;

2、ComboBox_SelectionChanged事件是可以拿到SelectedIndex,但是不知道哪个Combox属于DattGrid的哪一列?

Alice 发表于 2016-11-9 14:37:30

安心海叶 发表于 2016-11-7 09:55
列是没有SelectIndex属性。

但是,我重新定义了ColumnHeader的模板,每一列的Header由Combox和TextBlo ...

经过电话沟通后,重新对问题进行了验证。
Header上放置ComboBox,如果按照我之前提示的方式添加到列上,那么在ComboBox的SelectionChanged的事件里,就可以通过如下代码获取到:
intcolumnIndex = ((C1.WPF.DataGrid.DataGridColumnHeaderPresenter)(((System.Windows.Controls.ComboBox)(sender)).Parent)).Column.Index;

但是因为是所有列统一用的Style设置,所以很难分辨是哪列的ComboBox触发了。

另一个问题,通常是在VisutalTree上查找元素。WPF的visualtreehelper.getchild方法可以获取对象的子级对象。
页: 1 [2] 3
查看完整版本: DataGrid的ColumnHeader为Combox