Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > DataGrid и кнопки управления в них


Автор: Artemprodigy 4.2.2014, 14:06
Здравствуйте!
Есть таблица DataGrid, которая биндится к DataTable. Свойство CanUserAddRows="True". И есть столбик с кнопками управления строчки. Хочется реализовать работу как показано на рисунке, который я прикрепил, чтоб для каждой строчки было две кнопки (Удалить и Сохранить) А для последней только кнопка сохранить. Понятно что для этого нужен класс конвертер. Вот что пока получилось найти и попробовать:

Код

                 <DataGridTemplateColumn Header="Управление" Width="160" CanUserReorder="False" CanUserResize="True" CanUserSort="True" MinWidth="40">
                     <DataGridTemplateColumn.CellTemplate>
                         <DataTemplate >
                             <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                                    <Button Template ="{DynamicResource GlassButton}" Content="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridRow}},
                                            Path=Item, Converter={StaticResource TextConverter}}" Margin="2,1" CommandParameter="{Binding}" Width="70" Height="20" Padding="0" Click="Button_Click1" />
                                    <Button Template ="{DynamicResource GlassButton}" Content="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridRow}},
                                            Path=Item, Converter={StaticResource TextConverter}}" Margin="2,1" CommandParameter="{Binding}" Width="70" Height="20" Padding="0" Click="Button_Click2" />
                                </StackPanel>
                         </DataTemplate>
                     </DataGridTemplateColumn.CellTemplate>
                 </DataGridTemplateColumn>


Код

    public class TextConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value != null && value.GetType() == typeof (DataRowView))
            {
                var v = ((DataRowView)value).Row.Table.Rows.IndexOf(((DataRowView)value).Row);
                return "Удалить"; //+ ((DataRowView) value).Row.Table.Rows.IndexOf(((DataRowView) value).Row);
            }

            return "Добавить";
        }

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)