DataGridTemplateColumn中的问题-具有自动完成框的Datagrid [英] Problem in DataGridTemplateColumn - Datagrid with Autocompletebox

查看:119
本文介绍了DataGridTemplateColumn中的问题-具有自动完成框的Datagrid的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我在运行时填充第一列为MaterialCode时,自动完成框运行正常,但是当我编辑第二列为Desciption时,第一列变为空.你能给我我所缺少的吗,谢谢.


When i fill the first column Which is MaterialCode at runtime the autocompletebox run ok but when i edit the second column which is Desciption the first column become empty. can you give what i''m missing , Thanks.


<DataGrid AutoGenerateColumns="False" Height="162" HorizontalAlignment="Left" Margin="78,327,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="859" >

            <DataGrid.Columns>

                <DataGridTemplateColumn Header="Material Code" Width="180" x:Name="autoCompleteBox2" Selector.IsSelected="True">

                    <DataGridTemplateColumn.CellTemplate>

                        <DataTemplate>
                            <my:AutoCompleteBox Height="23" HorizontalAlignment="Left" Margin="0,0,0,0" ItemsSource="{Binding AllRoles, RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}}" Name="autoCompleteBox1" VerticalAlignment="Top" Width="180" />
                        </DataTemplate>

                    </DataGridTemplateColumn.CellTemplate>

                </DataGridTemplateColumn>

                <DataGridTextColumn Binding="{Binding Path=Description}" Header=" Description" Width="*" />
                <DataGridTextColumn Binding="{Binding Path=Quantity}" Header=" Quantity" Width="100" />
                <DataGridComboBoxColumn x:Name="ComboBoxColumn" Header="Unit Measure"  SelectedItemBinding="{Binding Position}" Width="100" />

            </DataGrid.Columns>

        </DataGrid>





public partial class SRNew : UserControl
  {
      public ObservableCollection<String> AllRoles { get; private  set; }
      public ObservableCollection<string> UnitMeasure { get; set; }
    
      

      public SRNew()
      {
          UnitMeasure = new ObservableCollection<string>() { "Pcs", "Box", "Inches" };
          InitializeComponent();
  
          var names = new ObservableCollection<String>();
          
          List<SRItems> myList = new List<SRItems>();
          ComboBoxColumn.ItemsSource = UnitMeasure;
          
          dataGrid1.ItemsSource = myList;
          var mylist = new List<string>
                           {
                               "Macedonia",
                               "Madagascar",
                               "Malawi",
                               "Malaysia",
                               "Maldives",
                               "Mali",
                               "Malta",
                               "Marshall Islands",
                               "Mauritania",
                               "Mauritius",
                               "Mexico",
                               "Micronesia",
                               "Moldova",
                               "Monaco",
                               "Mongolia",
                               "Montenegro",
                               "Morocco",
                               "Mozambique",
                               "Myanmar",

                           };
         
          for (int u = 0; u <= mylist.Count - 1; u++)
          {
              names.Add(mylist[u]);
          }

          this.AllRoles = names;
      }
      public class SRItems
      {
          public String MaterialCode { get; set; }
          public String Description { get; set; }
          public String  Quantity { get; set; }
          
      }

推荐答案



可能必须为DataGridTemplateColumn指定一个CellEditingTemplate.


尝试以下操作:
Hi,

probably you have to specify an CellEditingTemplate for the DataGridTemplateColumn.


Try this:
<datagridtemplatecolumn.celleditingtemplate> 
  <datatemplate>
     <my:autocompletebox height="23" horizontalalignment="Left" margin="0,0,0,0" itemssource="{Binding AllRoles, RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}}" name="autoCompleteBox1" verticalalignment="Top" width="180" xmlns:my="#unknown" />
  </datatemplate>
</datagridtemplatecolumn.celleditingtemplate>



将编辑模板设置为与该列的显示"模板相同.

检查绑定后,应在自动完成框模板中的MaterialCode属性中添加绑定:



That sets the editing template to the same as your "display" template of the column.

After examining your bindings, you should add a binding to your MaterialCode property in the autocompletebox template:

Text={Binding Path=MaterialCode}



希望这会有所帮助.



Hope this helps.


这篇关于DataGridTemplateColumn中的问题-具有自动完成框的Datagrid的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆