0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 55
1

Текст подсказка в ячейке DataGrid

10.09.2018, 22:20. Показов 2161. Ответов 19

Author24 — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста как сделать подсказку, при создании новой строки в ячейке DataGrid с серым текстом, которая при редактировании исчезала и можно было записать в неё другой текст. Для пояснения пример .gif из Эксель:
Текст подсказка в ячейке DataGrid

Варианты пробовал, ElementStyle, EditingElementStyle, в textBlock устанавливал FallBackValue=, вроде текст в новой строке появляется, но после редактирования остаётся цветом который относится к FallBackValue.

Заранее благодарю.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.09.2018, 22:20
Ответы с готовыми решениями:

Datagrid в ячейке Datagrid c корректным отображением границ
Задача поместить связанные данные (две таблицы Sql связаны по id ) в виде таблицы ячейки одной их...

WPF, DataGrid и многострочие в ячейке
Как ясно из вопроса: есть DataGrid и текст в ячейках. Как сделать перенос текста внутри его? Везде...

Два значения из БД в одной ячейке DataGrid
День добрый. Из БД берётся два значения цены из разных таблиц, надо что бы эти значения были...

Заполнение значения в определённой ячейке DataGrid
Добрый день, уважаемые форумчане! Не так давно стал изучать WPF. Возник один вопрос, который...

19
Модератор
Эксперт .NET
15397 / 10652 / 2773
Регистрация: 21.04.2018
Сообщений: 31,439
Записей в блоге: 2
11.09.2018, 00:39 2
Посмотрите https://www.cyberforum.ru/faq/... 17.html#17 . Что-то подобное надо.
0
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 55
11.09.2018, 19:38  [ТС] 3
Элд Хасп, Прошу прощения, но никак не могу связать первый вами указанный вариант с datagrid в XAML "Взят с ресурса stackoverflow.com - TextBox Подсказка" (https://www.cyberforum.ru/faq/... 17.html#17), всё вокруг да около хожу в точку никак не попаду, с одним вариантом пытаюсь через DataGridTemplateColumn.CellTemplate, вроде как подсказка появляется на она после добавления строки и в предыдущей остается, через DataGridTextColumn.ElementStyle и DataGridTextColumn.EditingElementStyle пытаюсь ошибок не выдаёт, но текст не появляется, вариантов пробовал множество, результата никак не добьюсь. Запутался уже.
0
Модератор
Эксперт .NET
15397 / 10652 / 2773
Регистрация: 21.04.2018
Сообщений: 31,439
Записей в блоге: 2
11.09.2018, 22:41 4
Вам, как я думаю, надо создать UserControl, а уже его прописывать в ячейку.
У Вас здесь только картинка. Скиньте какой-то маленький кусок рабочего кода для примера понятного Вам.
Постараюсь на нём показать.
0
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 55
11.09.2018, 22:59  [ТС] 5
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <DataGrid x:Name="DGR" AutoGenerateColumns="False">
            <DataGrid.Resources>
                <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
            </DataGrid.Resources>
            <DataGrid.Columns>
                
                <DataGridTextColumn Header="Name" Binding="{Binding Name}">
                    <DataGridTextColumn.ElementStyle>
                        <Style TargetType="TextBlock">
                            <Setter Property="Visibility" Value="Visible"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding Text.IsEmpty, Converter={StaticResource BooleanToVisibilityConverter}, ElementName=TextB}">
                                    <Setter Property="Visibility" Value="Hidden"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </DataGridTextColumn.ElementStyle>
                    <DataGridTextColumn.EditingElementStyle>
                        <Style TargetType="TextBox" x:Name="TextB">
                            <Setter Property="Background" Value="{x:Null}"/>
                        </Style>
                    </DataGridTextColumn.EditingElementStyle>
                </DataGridTextColumn>
                <DataGridTextColumn Header="SecondName" Binding="{Binding SecondName}"/>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>
C#
1
2
3
4
5
6
7
8
9
10
11
public partial class MainWindow : Window
    {
        ObservableCollection<Person> person = new ObservableCollection<Person>();
        public MainWindow()
        {
            InitializeComponent();
            if (person == null)
                person = new ObservableCollection<Person>();
            DGR.ItemsSource = person;
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 public class Person : INotifyPropertyChanged
    {
        private string name;
        private string secondName;
        private DateTime dateTime;
 
        public string Name
        {
            get { return name; }
            set
            {
                name = value;
                OnPropertyChanged("Name");
            }
        }
        public string SecondName
        {
            get { return secondName; }
            set
            {
                secondName = value;
                OnPropertyChanged("SecondName");
            }
        }
 
        public event PropertyChangedEventHandler PropertyChanged;
        public void OnPropertyChanged([CallerMemberName]string prop = "")
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(prop));
        }
    }
}
0
879 / 558 / 291
Регистрация: 21.11.2012
Сообщений: 1,553
12.09.2018, 13:55 6
я бы сделал так.. для начала нужно сделать свойство, которое бы отвечало за отображение текста "введите что-то:". Есть 2 способа. Первый сделать кастомный текстбокс, второй с помощью attachedproperty. я покажу решиние со вторым..
для начала создадим такое свойство:

Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    public static class AttachesProperties
    {
        public static string GetDefaultText(DependencyObject obj)
        {
            return (string)obj.GetValue(DefaultTextProperty);
        }
 
        public static void SetDefaultText(DependencyObject obj, string value)
        {
            obj.SetValue(DefaultTextProperty, value);
        }
 
        // Using a DependencyProperty as the backing store for DefaultText.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty DefaultTextProperty =
            DependencyProperty.RegisterAttached("DefaultText", typeof(string), typeof(AttachesProperties));
    }


теперь определим стиль для текстбокса. Отображением текста будет заниматься текстблок:

Кликните здесь для просмотра всего текста

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<SolidColorBrush x:Key="TextBox.Static.Border" Color="#FFABAdB3"/>
        <SolidColorBrush x:Key="TextBox.MouseOver.Border" Color="#FF7EB4EA"/>
        <SolidColorBrush x:Key="TextBox.Focus.Border" Color="#FF569DE5"/>
        <Style x:Key="TextBoxStyle1" TargetType="{x:Type TextBox}">
            <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/>
            <Setter Property="BorderBrush" Value="{StaticResource TextBox.Static.Border}"/>
            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="KeyboardNavigation.TabNavigation" Value="None"/>
            <Setter Property="HorizontalContentAlignment" Value="Left"/>
            <Setter Property="local:AttachesProperties.DefaultText" Value="Hallo, world!"></Setter>
            <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
            <Setter Property="AllowDrop" Value="true"/>
            <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/>
            <Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TextBox}">
                        <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
                            <Grid>
                                <ScrollViewer x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
                                <TextBlock Text="{Binding Path=(local:AttachesProperties.DefaultText), RelativeSource={RelativeSource AncestorType=TextBox, Mode=FindAncestor}}" Margin="2 2 0 0" Foreground="Silver" x:Name="tbDefaultText">
                                    <TextBlock.Visibility>
                                        <MultiBinding Converter="{StaticResource DefaultTextConverter}">
                                            <Binding Path="Text" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type TextBox}}"></Binding>
                                            <Binding Path="IsFocused" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type TextBox}}"></Binding>
                                            <Binding Path="(local:AttachesProperties.DefaultText)" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type TextBox}}"></Binding>
                                        </MultiBinding>
                                    </TextBlock.Visibility>
                                </TextBlock>
                            </Grid>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter Property="Opacity" TargetName="border" Value="0.56"/>
                            </Trigger>
                            <Trigger Property="IsMouseOver" Value="true">
                                <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource TextBox.MouseOver.Border}"/>
                            </Trigger>
                            <Trigger Property="IsKeyboardFocused" Value="true">
                                <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource TextBox.Focus.Border}"/>
                                <Setter Property="Visibility" Value="Collapsed" TargetName="tbDefaultText"></Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="IsInactiveSelectionHighlightEnabled" Value="true"/>
                        <Condition Property="IsSelectionActive" Value="false"/>
                    </MultiTrigger.Conditions>
                    <Setter Property="SelectionBrush" Value="{DynamicResource {x:Static SystemColors.InactiveSelectionHighlightBrushKey}}"/>
                </MultiTrigger>
            </Style.Triggers>
        </Style>


далее добавляем конвертер для отображения/скрытия текста
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class DefaultTextConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            var text = values[0];
            var isFocused = (bool)values[1];
            var defaultText = values[2];
 
            if (isFocused) return Visibility.Collapsed;
            else if (defaultText == null) return Visibility.Collapsed;
            else if (text != null && !string.IsNullOrEmpty(text.ToString())) return Visibility.Collapsed;
            else return Visibility.Visible;
        }
 
        public object[] ConvertBack(object value, Type[] targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }



после того, как создали стиль для текстбокса, используем DataGridTemplateColumn:

Кликните здесь для просмотра всего текста

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<DataGrid>
   <DataGrid.Columns>
         <DataGridTemplateColumn Header="Name">
              <DataGridTemplateColumn.CellTemplate>
                 <DataTemplate><TextBlock Text="{Binding Name}"/></DataTemplate>
              </DataGridTemplateColumn.CellTemplate>
 
              <DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate>
                            <TextBox Style="{StaticResource TextBoxStyle1}" Text="{Binding Name, Mode=TwoWay}" local:AttachesProperties.DefaultText="Введите имя:"></TextBox>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellEditingTemplate>
         </DataGridTemplateColumn>
   </DataGrid.Columns>
</DataGrid>


далее при редактировании записи если в ячейке пусто, появится надпись "Введите имя:" пока не введешь что-то
0
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 55
12.09.2018, 14:11  [ТС] 7
Спасибо большое, буду пробовать, когда доберусь до компа.
0
Модератор
Эксперт .NET
15397 / 10652 / 2773
Регистрация: 21.04.2018
Сообщений: 31,439
Записей в блоге: 2
12.09.2018, 16:11 8
С цветами что-то ни как не получается. Пока посмотрите маленький пример
XAML
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<Window x:Name="window" x:Class="Текст_подсказка_в_ячейке_DataGrid.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Текст_подсказка_в_ячейке_DataGrid"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        xmlns:col="clr-namespace:System.Collections;assembly=mscorlib"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800" Loaded="window_Loaded">
    <Window.Resources>
        <col:ArrayList x:Key="Source">
            <local:ClassHuman   Family="Петров" Name="Иван"/>
            <local:ClassHuman   Family="Сидорова" Name="Татьяна"/>
            <local:ClassHuman   Family="Толстой" Name="Лев"/>
            <local:ClassHuman   Family="Николаева" Name="Наталья"/>
        </col:ArrayList>
    </Window.Resources>
    <Window.DataContext>
        <Binding Mode="OneWay" Source="{StaticResource Source}"/>
    </Window.DataContext>
    <Grid >
        <Grid.Resources>
            <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
        </Grid.Resources>
        <DataGrid x:Name="DGR" ItemsSource="{Binding}"  HorizontalAlignment="Center" VerticalAlignment="Top" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding Family}" ClipboardContentBinding="{x:Null}" Header="Фамилия"/>
                <DataGridTextColumn Binding="{Binding Name}" ClipboardContentBinding="{x:Null}" Header="Имя"/>
                <DataGridTemplateColumn ClipboardContentBinding="{x:Null}">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Grid HorizontalAlignment="Left" VerticalAlignment="Top">
                                <TextBlock x:Name="textBlock" Margin="5,2" Text="Фамилия" Foreground="{Binding BorderBrush, ElementName=txtUserEntry}" 
                                            Visibility="{Binding Text.IsEmpty, Converter={StaticResource BooleanToVisibilityConverter}, ElementName=txtUserEntry}"/>
                                <TextBox Name="txtUserEntry" Background="{x:Null}" Text="{Binding Name}">
                                    <TextBox.Style>
                                        <Style>
                                            <Setter Property="TextBox.Background" Value="White"/>
                                            <Style.Triggers>
                                                <DataTrigger  Binding="{Binding Visibility, ElementName=textBlock}"  Value="Visibility.Visible">
                                                    <Setter Property="TextBox.Background" Value="{x:Null}"/>
                                                </DataTrigger>
                                            </Style.Triggers>
                                        </Style>
                                    </TextBox.Style>
                                </TextBox>
                            </Grid>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
 
        </DataGrid>
        <!--<Border>
            <Grid HorizontalAlignment="Left" VerticalAlignment="Top">
                <TextBlock x:Name="textBlock" Margin="5,2" Text="Фамилия" Foreground="{Binding BorderBrush, ElementName=txtUserEntry}"
                                            Visibility="{Binding Text.IsEmpty, Converter={StaticResource BooleanToVisibilityConverter}, ElementName=txtUserEntry}"/>
                <TextBox Name="txtUserEntry" Background="{x:Null}" Text="{Binding Name}"/>
            </Grid>
        </Border>-->
 
    </Grid>
</Window>

C#
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
namespace Текст_подсказка_в_ячейке_DataGrid
{
    class ClassHuman
    {
        public string Family { get; set; }
        public string Name { get; set; }
        public ClassHuman() { }
        public ClassHuman(string Family, string Name) { this.Family = Family; this.Name = Name; }
    }
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
        private void window_Loaded(object sender, RoutedEventArgs e)
        {
        }
    }
}


Добавлено через 20 минут
TextBox В строках 36-47 надо поменять
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
     <TextBox Name="txtUserEntry"  Text="{Binding Name}">
        <TextBox.Style>
            <Style>
                <Setter Property="TextBox.Background" Value="White"/>
                <Style.Triggers>
                    <DataTrigger  Binding="{Binding Visibility, ElementName=textBlock}"  Value="Visible">
                        <Setter Property="TextBox.Background" Value="{x:Null}"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBox.Style>
    </TextBox>


Добавлено через 1 минуту
Надо ещё сделать смену цвета шрифта при выделении никак не могу найти за что зацепиться.
0
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 55
12.09.2018, 19:56  [ТС] 9
Спасибо Вам большое, буду экспериментировать, по крайней мере есть за что зацепится, а то две недели это дело долблю, а толку вообще нет.
0
Модератор
Эксперт .NET
15397 / 10652 / 2773
Регистрация: 21.04.2018
Сообщений: 31,439
Записей в блоге: 2
12.09.2018, 20:06 10
Я рядом тему открыл MultiDataTrigger в DataGrid на свойство DataGridCell.IsEditing Там улучшенный вариант. Не удалась только установка цветов во время редактирования.
0
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 55
12.09.2018, 20:20  [ТС] 11
Ок, буду следить )))
0
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 55
13.09.2018, 11:50  [ТС] 12
Элд Хасп, Ещё один вариант я нашел с FallbackValue: Но в нём есть два но по крайней мере для меня:
1. Не могу никак цвет изменить FallBackValue, а если и меняется то после записи остается прикрепленным к цвету FallBackValue
2. Если устанавливаешь курсор в ячейку для редактирования, то исчезает FallbackValue, во всех остальных ячейках.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<DataGrid x:Name="DGR" AutoGenerateColumns="False">
            <DataGrid.Resources>
                <local:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter"/>
            </DataGrid.Resources>
            <DataGrid.Columns>
                <DataGridTextColumn Header="Name">
                    <DataGridTextColumn.ElementStyle>
                        <Style TargetType="TextBlock">
                            <Setter Property="Text" Value="{Binding Name, FallbackValue=Name}"/>
                        </Style>
                    </DataGridTextColumn.ElementStyle>
 
                    <DataGridTextColumn.EditingElementStyle>
                        <Style TargetType="{x:Type TextBox}">
                            <Setter Property="Text" Value="{Binding Name,
                            ValidatesOnDataErrors=True, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"/>
                        </Style>
                    </DataGridTextColumn.EditingElementStyle>
                </DataGridTextColumn>
                <DataGridTextColumn Header="SecondName">
                    <DataGridTextColumn.ElementStyle>
                        <Style TargetType="TextBlock">
                            <Setter Property="Text" Value="{Binding SecondName, FallbackValue=SecondName}"/>
                        </Style>
                    </DataGridTextColumn.ElementStyle>
 
                    <DataGridTextColumn.EditingElementStyle>
                        <Style TargetType="{x:Type TextBox}">
                            <Setter Property="Text" Value="{Binding SecondName,
                            ValidatesOnDataErrors=True, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"/>
                        </Style>
                    </DataGridTextColumn.EditingElementStyle>
                </DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
0
879 / 558 / 291
Регистрация: 21.11.2012
Сообщений: 1,553
13.09.2018, 17:22 13
не знаю правильно ли задание понял)
Вложения
Тип файла: zip WpfApp1.zip (592.0 Кб, 9 просмотров)
0
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 55
13.09.2018, 18:09  [ТС] 14
Спасибо Вам большое, это тот вариант, только вопрос есть, а как решить проблему чтобы курсор в ячейку вставал не с третьего раза, у меня не к именно примеру также почему то получалось только с третьего раза вставить курсор в ячейку, никак разобраться не мог.
0
Модератор
Эксперт .NET
15397 / 10652 / 2773
Регистрация: 21.04.2018
Сообщений: 31,439
Записей в блоге: 2
13.09.2018, 21:50 15
Цитата Сообщение от scobin Посмотреть сообщение
Ещё один вариант я нашел с FallbackValue...
Сидел - экспериментировал. Так и не разобрался. Похоже это особенность работы стилей, шаблонов для списков. Так же как и в моём варианте - не нашёл решения.
0
Модератор
Эксперт .NET
15397 / 10652 / 2773
Регистрация: 21.04.2018
Сообщений: 31,439
Записей в блоге: 2
13.09.2018, 22:06 16
Цитата Сообщение от scobin Посмотреть сообщение
курсор в ячейку вставал не с третьего раза
Там два слоя элементов наложенных друг на друга.
И не показывается подсказка, если очищается ячейка.
Миниатюры
Текст подсказка в ячейке DataGrid  
0
0 / 0 / 0
Регистрация: 12.04.2017
Сообщений: 55
13.09.2018, 22:23  [ТС] 17
Я по поводу FallbackValue из Microsoft выписал, странная ситуация, я фактические ничего не нашёл по поводу этого, может как то события пишется для неё, но уж точно мне до этого далеко, а так глядя на первый взгляд многого мудрить не надо, и слоями перекрывать не надо.
0
Модератор
Эксперт .NET
15397 / 10652 / 2773
Регистрация: 21.04.2018
Сообщений: 31,439
Записей в блоге: 2
14.09.2018, 00:27 18
Цитата Сообщение от scobin Посмотреть сообщение
Ок, буду следить )))
Посмотрите соседнюю тему. Проблемы с цветами решил. Осталась проблема с автоматическим добавлением новой строки. Пока можно делать через кнопку "Добавить строку".

Добавлено через 17 минут
Цитата Сообщение от scobin Посмотреть сообщение
Я по поводу FallbackValue .... глядя на первый взгляд многого мудрить не надо, и слоями перекрывать не надо
НО проблема в том, что она даёт подсказку только при ОТСУТСТВИИ привязки. Когда же привязка есть, но поле пустое FallbackValue не даст требуемый результат. Удалите значение из существующего поля - увидите.
0
879 / 558 / 291
Регистрация: 21.11.2012
Сообщений: 1,553
14.09.2018, 10:17 19
Цитата Сообщение от scobin Посмотреть сообщение
Спасибо Вам большое, это тот вариант, только вопрос есть, а как решить проблему чтобы курсор в ячейку вставал не с третьего раза, у меня не к именно примеру также почему то получалось только с третьего раза вставить курсор в ячейку, никак разобраться не мог.
можно добавить триггер:

XML
1
2
3
4
5
6
7
8
9
10
<DataGridTemplateColumn.CellEditingTemplate>
    <DataTemplate>
         <TextBox x:Name="tbEdit" Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
         <DataTemplate.Triggers>
                <Trigger Property="Visibility" SourceName="tbEdit" Value="Visible">
                      <Setter TargetName="tbEdit" Property="FocusManager.FocusedElement" Value="{Binding ElementName=tbEdit}"></Setter>
                </Trigger>
        </DataTemplate.Triggers>
    </DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
0
Модератор
Эксперт .NET
15397 / 10652 / 2773
Регистрация: 21.04.2018
Сообщений: 31,439
Записей в блоге: 2
19.09.2018, 20:45 20
scobin, посмотрите в теме MultiDataTrigger в DataGrid на свойство DataGridCell.IsEditing решение что Вы просили.
0
19.09.2018, 20:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2018, 20:45
Помогаю со студенческими работами здесь

Отображение картинки в ячейке DataGrid в зависимости от условия
Добрый день. На форме есть datagrid. Заполняю его из БД.Есть вычисляемый столбец. Если в этом...

Datagrid в WPF. Задать ячейке значение null
Привет! Ребят подскажите плз как мне удалить (не программно а просто тыкая мышкой и нажимая на...

Строковый тип отображается в ячейке DataGrid как "Коллекция"
Доброй ночи всем! public MilitaryAircraftEntities militaryAircraftOC = new...

Не помещается текст в ячейке в DataGridView
Привет всем ! Я новичок на форуме , поэтому сразу прошу прощения ежели что не так. У меня имеется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru