2012-04-08 4 views
0

У меня есть ListView с строками на нем. Когда я нажимаю на определенную ячейку, я хочу, чтобы выбранная ячейка редактировалась с помощью поля со списком, и дело в том, что я это сделал, но коробка combox все еще остается даже после редактирования. Я хочу, чтобы поле со списком возвращалось к текстовому блоку.как отредактировать строку списка со списком

 <Style TargetType="{x:Type FrameworkElement}" 
    x:Key="GridEditStyle"> 
      <Setter Property="VerticalAlignment" Value="Center" /> 
      <Setter Property="Visibility" 
    Value="{Binding Path=IsSelected, 
     RelativeSource={RelativeSource FindAncestor, 
      AncestorType={x:Type ListViewItem}}, 
     Converter={StaticResource boolToVis}, 
      ConverterParameter=True}" /> 
     </Style> 

<ComboBox SelectedItem="Present" 
                  ItemsSource="{Binding ElementName=This, 
                  Path=AvailablePublishers}" 
                  Style="{StaticResource GridEditStyle}" /> 

код за это

private ObservableCollection<string> _AvailablePublishers = 
new ObservableCollection<string>(); 
    public Student_Attendance() 
    { 
     InitializeComponent(); 
     _AvailablePublishers.Add("Present"); 
     _AvailablePublishers.Add("Absent"); 
     _AvailablePublishers.Add("Late"); 



    } 
    public ObservableCollection<string> AvailablePublishers 
    { get { return _AvailablePublishers; } } 

    public class BoolToVisibilityConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, 
     object parameter, System.Globalization.CultureInfo culture) 
    { 
     bool param = bool.Parse(parameter as string); 
     bool val = (bool)value; 

     return val == param ? Visibility.Visible : Visibility.Hidden; 
    } 

    public object ConvertBack(object value, Type targetType, 
     object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

плз помочь мне спасибо

ответ

0

Вы знаете, если вы использовали DataGrid, вы would't должны сделать что-нибудь для переключения просмотра и редактирования шаблоны, это делается автоматически ... вот образец, чтобы вы начали:

<DataGrid ItemsSource="{Binding ...}"> 
    <DataGrid.Columns> 
     <DataGridTemplateColumn> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock DataContext="{Binding ...}"/> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
       <DataGridTemplateColumn.CellEditingTemplate> 
        <DataTemplate> 
         <ComboBox ItemsSource="{Binding ElementName=This, Path=AvailablePublishers}" SelectedItem="{Binding ...}"/> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellEditingTemplate> 
      </DataGridTemplateColumn> 
+0

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

+0

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

+0

Кроме того, обратите внимание, что вы можете добиться того, что искали с помощью ListView, это просто больше проблем. У меня здесь несколько сообщений, я думал, что помог кому-то в этом. Но когда я увидел ваш вопрос, я просто подумал: зачем переживать все эти проблемы, когда вы можете просто делать то, что вам нужно из коробки? Во всяком случае, рад помочь. Успокойся –