Как включить текст столбца сетки данных в C # / wpf - PullRequest
0 голосов
/ 23 января 2019

У меня есть приложение, в котором, как только я нажимаю «Вставить», я хочу, чтобы программа включила текст в сетке данных, и пользователь мог ввести информацию о продукте.Может ли кто-нибудь помочь мне с этим?

под кодом приложения и рисунком

введите описание изображения здесь

<Window>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="0" Grid.Column="0" FontWeight="Bold" HorizontalAlignment="Center">Produtos</TextBlock>
        <TextBlock Grid.Row="0" Grid.Column="1" FontWeight="Bold" HorizontalAlignment="Center">Unidades</TextBlock>
        <TextBlock Grid.Row="0" Grid.Column="2" FontWeight="Bold" HorizontalAlignment="Center">Empresas</TextBlock>
        <TextBlock Grid.Row="0" Grid.Column="3" FontWeight="Bold" HorizontalAlignment="Center">Operadores</TextBlock>
        <DataGrid Grid.Row="1" Grid.Column="0" CanUserAddRows="False" CanUserDeleteRows="False" Margin="5" ItemsSource="{Binding ListaProdutos}" AutoGenerateColumns="False" SelectedItem="{Binding ProdutoSelecionado}">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Descrição" Binding="{Binding Descricao, UpdateSourceTrigger=PropertyChanged}" Width="*"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
        <DataGrid Grid.Row="1" Grid.Column="1" CanUserAddRows="False" CanUserDeleteRows="False" Margin="5" ItemsSource="{Binding ListaUnidades}" AutoGenerateColumns="False" SelectedItem="{Binding UnidadeSelecionada}">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Descrição" Binding="{Binding Descricao, UpdateSourceTrigger=PropertyChanged}" Width="*"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
        <DataGrid Grid.Row="1" Grid.Column="2" CanUserAddRows="False" CanUserDeleteRows="False" Margin="5" ItemsSource="{Binding ListaEmpresas}" AutoGenerateColumns="False" SelectedItem="{Binding EmpresaSelecionada}">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Descrição" Binding="{Binding Descricao, UpdateSourceTrigger=PropertyChanged}" Width="*"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
        <DataGrid Grid.Row="1" Grid.Column="3" CanUserAddRows="False" CanUserDeleteRows="False" Margin="5" ItemsSource="{Binding ListaOperadores}" AutoGenerateColumns="False" SelectedItem="{Binding OperadorSelecionado}">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Nome" Binding="{Binding Nome, UpdateSourceTrigger=PropertyChanged}" Width="*"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
        <StackPanel Grid.Row="2" Grid.Column="0" Orientation="Horizontal" HorizontalAlignment="Center">
            <Button Command="{Binding InserirProdutoCommand}" Width="50" Height="25">Inserir</Button>
            <Button Command="{Binding ExcluirProdutoCommand}" Width="50" Height="25">Excluir</Button>
        </StackPanel>
        <StackPanel Grid.Row="2" Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Center">
            <Button Command="{Binding InserirUnidadeCommand}" Width="50" Height="25">Inserir</Button>
            <Button Command="{Binding ExcluirUnidadeCommand}" Width="50" Height="25">Excluir</Button>
        </StackPanel>
        <StackPanel Grid.Row="2" Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Center">
            <Button Command="{Binding InserirEmpresaCommand}" Width="50" Height="25">Inserir</Button>
            <Button Command="{Binding ExcluirEmpresaCommand}" Width="50" Height="25">Excluir</Button>
        </StackPanel>
        <StackPanel Grid.Row="2" Grid.Column="3" Orientation="Horizontal" HorizontalAlignment="Center">
            <Button Command="{Binding InserirOperadorCommand}" Width="50" Height="25" HorizontalAlignment="Center">Inserir</Button>
            <Button Command="{Binding ExcluirOperadorCommand}" Width="50" Height="25" HorizontalAlignment="Center">Excluir</Button>
        </StackPanel>
        <Border Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="4" BorderThickness="0 1 0 0" BorderBrush="Gray" Margin="10,10,5,0" Padding="5 5 5 0" VerticalAlignment="Top" Height="46">
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
                <Button Command="{Binding SalvarCommand}" Width="80" Height="30">Salvar</Button>
                <Button Command="{Binding CancelarCommand}" Width="80" Height="30">Cancelar</Button>
            </StackPanel>
        </Border>
    </Grid>
</Window>

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Я нашел решение для удовлетворения требований, но ему нужен объект, связанный с Datagrid, имеет логическое свойство. Вот xaml:

<DataGridTemplateColumn Width="120">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBox
                                Name="innerTextBox"
                                BorderThickness="0"
                                IsReadOnly="{Binding DisableEdit, UpdateSourceTrigger=PropertyChanged}"
                                Text="{Binding Name}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

и вот объект: открытый класс Person: BindableBase { имя приватной строки;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    private bool disableEdit;

    public bool DisableEdit
    {
        get { return disableEdit; }
        set { SetProperty(ref disableEdit, value); }
    }

}

А вот событие button_click:

        var person = datagrid.SelectedCells[0].Item as Person;

        person.DisableEdit = false;
0 голосов
/ 23 января 2019

Поместите UpdateSourceTrigger=PropertyChanged в привязку DataGrid вместо DataGridTextColumn

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...