0

ListView行のあるがあります。特定のセルをクリックすると、選択したセルをコンボボックスで編集できるようにしたいのですが、編集した後もコンボボックスは残ります。コンボボックスをテキストブロックに戻したい。

        <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();
    }
}

plzは私を助けてくれてありがとう

4

1 に答える 1

0

を使用した場合DataGrid、テンプレートの表示と編集を切り替えるために何もする必要はありません。自動的に行われます。開始するためのサンプルを次に示します。

<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>
于 2012-04-11T20:58:15.010 に答える