首页 新闻 会员 周边 捐助

WPF DataGrid 动态模板列 左右拖动失效

0
[已解决问题] 解决于 2019-06-03 14:01

在后台动态加载列,列的头部使用模板

 但是列的左右拖动失效了,怎么在该基础上实现 列的左右拖动呀~~~

会编程的厨子的主页 会编程的厨子 | 菜鸟二级 | 园豆:242
提问于:2018-07-30 11:14
< >
分享
最佳答案
0

应该是鼠标点不到你的列 所以拖动效果没了 你试试该该模版 我以前也遇到过 也是改模版解决的

奖励园豆:5
kiba518 | 初学一级 |园豆:189 | 2018-07-30 11:40

我改了模板,可以进行拖拉了,但是遇到一个问题,我怎么在模板中将该列的Hearder的值赋到模板中的一个Label中去呢???

会编程的厨子 | 园豆:242 (菜鸟二级) | 2018-07-30 15:08

@小_妮_子: 你试试 给元素起个Name  然后 用别的元素 绑定 这个name

用{Binding  property,ElementName=name} 

kiba518 | 园豆:189 (初学一级) | 2018-07-30 15:36

@kiba518: 我的这个列是动态的,是在后台动态创建的~~ 

 

Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("A1", "number1");
dic.Add("A2", "number2");
dic.Add("A3", "number3");
foreach (var item in dic.Keys)
{
DataGridTextColumn coll = new DataGridTextColumn();
coll.Binding = new Binding(dic[item]);
coll.HeaderTemplate = (DataTemplate)Resources["hdic"];
coll.Header = item;
this.myGrid.Columns.Add(coll);
}

会编程的厨子 | 园豆:242 (菜鸟二级) | 2018-07-30 15:39

@kiba518: 

我就是想把创建的列的Hearder的值绑定到模板中的lable中去~~ 

会编程的厨子 | 园豆:242 (菜鸟二级) | 2018-07-30 15:39

@小_妮_子: 使用了 HeaderTemplate Header 就无效了

实在不行 用最傻的方法 定义个公共变量 然后前台穿出去绑定

{Binding Path= 属性 ,RelativeSource={RelativeSource AncestorType={x:Type Page}}}

kiba518 | 园豆:189 (初学一级) | 2018-07-30 15:58

@kiba518: 

这样弄??? 不是很清楚,

另外,<TextBox Text="{Binding ElementName=c1,Path=Header}"></TextBox>这句是可以用的,但是要给列设置name属性,

会编程的厨子 | 园豆:242 (菜鸟二级) | 2018-07-30 16:04

@小_妮_子: 差不多, 但穿出去找变量,就不用使用ElementName了。就这几种模式,试试就可以了

kiba518 | 园豆:189 (初学一级) | 2018-07-30 16:08

@kiba518: 

用公共变量那个怎么弄呀?? 整不懂~~~ 

会编程的厨子 | 园豆:242 (菜鸟二级) | 2018-07-30 16:09

@小_妮_子: 

你正常 不是要给datagrid绑定一个集合变量嘛,在页面生成的时候就会去那个页面找那个变量,

正常情况,你只能使用这个绑定变量下的内容,但还可以穿出去,去那个页面找别的变量。类似这样定义,就穿出去了。

{Binding Path= 属性 ,RelativeSource={RelativeSource AncestorType={x:Type Page}}}

kiba518 | 园豆:189 (初学一级) | 2018-07-30 16:14
其他回答(1)
0

不建议直接修改它的ControlTemplate,因为有些特性,比如左右拖动是需要默认的ControlTemplate配合的,DataGridColumn的Header是一个Object类型,可以直接设置Header里的内容(不只是文字),如果你认为默认的ControlTemplate和你的要求不一致,那么可以从Blend中复制默认的模板代码进行修改,自行创建可能会导致一些不能预料到的行为。另外,提问的布局代码冗余了(如果我没有理解错误的话)。

.NetDomainer | 园豆:336 (菜鸟二级) | 2018-07-30 11:27

我把模板改了,现在可以进行拖动了,但是有个问题,我不知道怎么把Hear的值赋到模板中去~~

支持(0) 反对(0) 会编程的厨子 | 园豆:242 (菜鸟二级) | 2018-07-30 14:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册