C # WPF добавить элемент управления в DataGrid - PullRequest
0 голосов
/ 26 сентября 2018

Я хочу добавить некоторые элементы управления в DataGrid.

У меня есть XML-код:

<DataGrid Name="dgCreateOperationsData" HorizontalScrollBarVisibility="Hidden"  HorizontalAlignment="Left" Height="214" Margin="2,170,0,0" VerticalAlignment="Top" Width="775" FontWeight="Bold" HeadersVisibility="None" SelectionMode="Single" Background="White"  CanUserAddRows="False" CanUserDeleteRows="False" ColumnWidth="100"/>

и следующий код:

OperationEntry opEntry = new OperationEntry();
opEntry.OperationName = new ComboBox() { Width = 50, ItemsSource = _operationList};
opEntry.Time = new TextBox() { Width = 50, Text = "" };
opEntry.Flow = new TextBox() { Width = 50, Text = "" };
opEntry.SysSpeed = new TextBox() { Width = 50, Text = "" };
opEntry.Pressure = new TextBox() { Width = 50, Text = "" };
opEntry.Torque = new TextBox() { Width = 50, Text = "" };
opEntry.Power = new TextBox() { Width = 50, Text = "" };
opEntry.Current = new TextBox() { Width = 50, Text = "" };

_operationEntryList.Add(opEntry);
dgCreateOperationsData.ItemsSource = _operationEntryList;

Проблема в том, что элементы управления отображаются, но вид элемента управления виден, пока я дважды не щелкну по нему (см. Изображение)

enter image description here

Почему это происходит?И как убрать эти ярлыки ??

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Вы можете определить DataGridTemplateColumns с помощью CellTemplates:

...
dgCreateOperationsData.ItemsSource = _operationEntryList;
dgCreateOperationsData.AutoGeneratingColumn += (s, e) =>
{
    FrameworkElementFactory fe = new FrameworkElementFactory(typeof(ContentControl));
    fe.SetBinding(ContentControl.ContentProperty, new Binding(e.PropertyName));
    e.Column = new DataGridTemplateColumn()
    {
        CellTemplate = new DataTemplate() { VisualTree = fe }
    };
};
0 голосов
/ 26 сентября 2018

Ниже приведен пример кода.Вам нужно поработать над этим, чтобы завершить функционал.Одна запись добавляется через код, и чтобы добавить больше записей, вам просто нужно нажать Enter в последнем ряду.Он автоматически добавит запись в коллекцию, и вы можете делать с данными все, что пожелаете.

Просмотр -

<DataGrid Grid.Row="1" AutoGenerateColumns="False" ItemsSource="{Binding CountryList}" BorderThickness="0" HorizontalAlignment="Left">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Country Name" Binding="{Binding CountryName}"/>
            <DataGridComboBoxColumn Header="City Name"/>
        </DataGrid.Columns>
    </DataGrid>

ViewModel -

    public ObservableCollection<CountryData> CountryList { get; set; }

        CountryList = new ObservableCollection<CountryData>();
        CountryList.Add(new CountryData { CountryName = "India" });
...