日期:2014-05-17  浏览次数:21073 次

WPF DataGridTextColumn列如何让其中的单元格不可编辑

代码是  <DataGrid>
        <DataGrid.Columns>
        <DataGridTextColumn Header="NAME" Width="*" Binding="{Binding Name}">
        <DataGridTextColumn Header="TYPE" Width="*" Binding="{Binding Type}"/>
        <DataGridTextColumn Header="VALUE" Width="*" Binding="{Binding Value}"/>
        <DataGridTextColumn Header="RANGE" Width="*" Binding="{Binding Range}"/>
        </DataGrid>
        </DataGrid.Columns>想各位大侠都懂...就是想去掉NAME TYPE RANGE列的编辑功能,让它们不能被编辑,只保留下VALUE列,让此列下的单元格可以输入文本,应该怎么搞?
求教!!!!!!
wpf datagrid

------解决方案--------------------
刚自己试了下。确实有问题。然后再MSDN查了下貌似是说DataGridTextColumn这个控件不是一个真正的Visual所以IsReadOnly的属性绑定没用。所以我这边稍微改了下用DataGridTemplateColumn代替。你试下这个替换掉<DataGridTextColumn Header="VALUE" Width="*" Binding="{Binding Value}" IsReadOnly="{Binding Type, Converter={StaticResource Type2Bool}}"/>这行。



                  <DataGridTemplateColumn  Header="VALUE" Width="*" >
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBox IsReadOnly="{Binding Type,Converter={StaticResource type2Bool}}" Text="{Binding Value}" BorderThickness="0" />
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>