2013-08-08 4 views
2
кода

XAML:Невозможно получить текст из текстового поля в виде списка

<ListView.View> 
    <GridView x:Name="myGridView"> 
     <GridViewColumn Width="0" DisplayMemberBinding="{Binding Id}"> 
      <GridViewColumnHeader Content="Id" IsHitTestVisible="False" /> 
     </GridViewColumn> 
     <GridViewColumn Width="50" Header="Cant"> 
      <GridViewColumn.CellTemplate> 
       <DataTemplate> 
        <TextBox FontSize="11" /> 
       </DataTemplate> 
      </GridViewColumn.CellTemplate> 
     </GridViewColumn> 
     <GridViewColumn Width="300" Header="Nombre" DisplayMemberBinding="{Binding Nombre}" /> 
    </GridView> 
</ListView.View> 

C# код для заполнения MyListView с элементами из другого ListView:

private void myListView_Drop(object sender, DragEventArgs e) 
{ 
    if (e.Data.GetDataPresent("myFormat")) 
    { 
     foreach (var item in e.Data.GetData("myFormat") as Dictionary<string, string>) 
     { 
      var itemC = new {Id = item.Key, Cant = "", Nombre = item.Value}; 
      myListView.Items.Add(itemC); 
      myListView.SelectedItem = itemC; 
     } 
    } 
} 

C# код для извлечения элементов из MyListView:

После заполнения myListView пользователи могут писать числа в каждом текстовом поле столбца «Cant», но позже, когда butto n, и вызывается GenerateArts(), эти числа теряются, т. е. item.Cant является «" (пустая строка) для каждого элемента.

В чем проблема?

Edit:

Когда GenerateArts() вызывается значения для item.Nombre и item-id будут там, как и ожидалось. Проблема с item.Cant.

ответ

1

Bind Cant до TextBox.Text Недвижимость, как показано ниже.

XAML:

  <GridViewColumn Width="50" Header="Cant"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <TextBox FontSize="11" Text="{Binding Cant}" MinWidth="30"/> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 

Код за изменения:

var itemC = new MyData() { Id = item.Key, Cant = "", Nombre = item.Value }; 

MyData класс

public class MyData 
{ 
    public string Id { get; set; } 
    public string Cant { get; set; } 
    public string Nombre { get; set; } 
} 
+0

Спасибо Ананд. Я пробовал это раньше, но когда элементы из другого списка исключены в myListView, я получаю (много раз) это исключение: привязка TwoWay или OneWayToSource не может работать с единственным доступным только для чтения свойством «Cant» типа «<> f_AnonymousType2'3 [System.String, System.String, System.String]. Даже если я перетаскиваю только предмет. –

+0

Запустил ваш код, и я тоже получил исключение. Вместо того, чтобы создавать анонимный класс со свойствами, не можете ли вы определить сам класс? –

+0

Я отредактировал свой ответ. –

-1

Вы используете if (! IsPostBack) в событии page_load? возможно, вы снова привязываете данные?

+0

Благодаря Марчиано. Я не знаю, что такое IsPostBack, но я буду исследовать прямо сейчас. –

+0

Marciano: это не веб-приложение, а настольное. –

+0

Жаль, ребята, я виноват –