Как добавить значения текстового поля в сетку данных в UWP? и у него есть вычисляемое поле, называемое приблизительной стоимостью - PullRequest
0 голосов
/ 08 мая 2020

____________ Это поля ввода текстовых полей ____________

    <Canvas Margin="20,36,0,4" CanBeScrollAnchor="True">

        <TextBox x:Name="srno" Width="72" Text="{Binding SrNo, Mode=TwoWay, UpdateSourceTrigger=Default}"  PlaceholderText="Sr No." Canvas.Left="46" Canvas.Top="412" Height="34" FontFamily="Century Gothic" FontSize="12" DesiredCandidateWindowAlignment="Default" HorizontalTextAlignment="Left" InputScope="Number"/>
        <TextBox x:Name="Itemne" Width="252" Text="{Binding Item_Name, Mode=TwoWay, UpdateSourceTrigger=Default}" PlaceholderText="Item Name" Canvas.Left="153" Canvas.Top="412" Height="34" FontFamily="Century Gothic" FontSize="12" DesiredCandidateWindowAlignment="Default" HorizontalTextAlignment="Left"/>
        <TextBox x:Name="Make_Brand" Width="140" Text="{Binding Make_Brand, Mode=TwoWay, UpdateSourceTrigger=Default}" PlaceholderText="Make/Brand" Canvas.Left="430" Canvas.Top="412" Height="34" FontFamily="Century Gothic" FontSize="12" DesiredCandidateWindowAlignment="Default" HorizontalTextAlignment="Left"/>
        <TextBox x:Name="UOM" Width="108" Text="{Binding UoM, Mode=TwoWay}" PlaceholderText="UoM" Canvas.Left="592" Canvas.Top="412" Height="34" FontFamily="Century Gothic" FontSize="12" DesiredCandidateWindowAlignment="Default" HorizontalTextAlignment="Left" />
        <TextBox x:Name="quantity" Width="100" Text="{Binding Quantity, Mode=TwoWay}" PlaceholderText="Quantity"  Canvas.Left="735" Canvas.Top="412" Height="34" FontFamily="Century Gothic" FontSize="12" DesiredCandidateWindowAlignment="Default" HorizontalTextAlignment="Left" />
        <TextBox x:Name="UnitCost" Width="138" Text="{Binding Unit_Cost, Mode=TwoWay}" PlaceholderText="Unit Cost" Canvas.Left="857" Canvas.Top="412" Height="34" FontFamily="Century Gothic" FontSize="12" DesiredCandidateWindowAlignment="Default" HorizontalTextAlignment="Left"/>
        <Button Content="Add" Canvas.Left="1048" Canvas.Top="412" Height="34" FontFamily="Century Gothic" FontSize="12" Click="Button_Add_Click" Width="107"/>

________________- это сетка данных ______________________

        <controls:DataGrid x:Name="Dgrd" AutoGenerateColumns="False" Canvas.Left="52" Canvas.Top="487" Height="157" Width="1151" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" >
            <controls:DataGrid.Columns>
                <controls:DataGridTextColumn  Header="Sr No" Binding="{Binding SrNo1}" Width="100"/>
                <controls:DataGridTextColumn Header="Item Name" Binding="{Binding Item_Name1}" Width="300"/>
                <controls:DataGridTextColumn Header="Make/Brand" Binding="{Binding Make_Brand1}" Width="150"/>
                <controls:DataGridTextColumn Header="UoM" Binding="{Binding UoM1}" Width="150" />
                <controls:DataGridTextColumn Header="Quantity" Binding="{Binding Quantity1}" Width="150" />
                <controls:DataGridTextColumn Header="Unit Cost" Binding="{Binding Unit_Cost1}" Width="150" />
                <controls:DataGridTextColumn Header="Approx cost" Binding="{Binding Approxcost1}" Width="150" />
                <controls:DataGridTextColumn Header="Indent No" Binding="{Binding IndentNo1}" Width="150" />

            </controls:DataGrid.Columns>
        </controls:DataGrid>

    </Canvas>

Расскажите, пожалуйста, как с этим справиться

1 Ответ

0 голосов
/ 11 мая 2020

Во-первых, вы можете создать модель представления, которая содержит свойства, которые вы хотите связать с DataGridTextColumn. Затем создайте список для привязки к ItemsSource из DataGrid, когда вы нажимаете кнопку, чтобы попытаться добавить значения в DataGrid, вы можете добавить значение в список, тогда пользовательский интерфейс также обновится. Например:

.cs:

public class MyViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    private string srNo1;
    public string SrNo1 {
        get {
            return srNo1;
        }
        set {
            srNo1 = value;
            NotifyPropertyChanged();
        }
    }
    private string item_Name1;
    public string Item_Name1
    {
        get
        {
            return item_Name1;
        }
        set
        {
            item_Name1 = value;
            NotifyPropertyChanged();
        }
    }
    private string make_Brand1;
    public string Make_Brand1
    {
        get
        {
            return make_Brand1;
        }
        set
        {
            make_Brand1 = value;
            NotifyPropertyChanged();
        }
    }
    ......
    // other proeprties

    private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}


public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        Lists = new ObservableCollection<MyViewModel>();
    }

    private ObservableCollection<MyViewModel> Lists { get; set; }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        MyViewModel vm = new MyViewModel();
        vm.SrNo1 = srno.Text;
        vm.Item_Name1 = Itemne.Text;
        vm.Make_Brand1 = Make_Brand.Text;
        vm.UoM1 = UOM.Text;
        vm.Quantity1 = quantity.Text;
        vm.Unit_Cost1 = UnitCost.Text;
        vm.Approxcost1 = //Your calculation
        Lists.Add(vm);
    }
}

.xaml:

<controls:DataGrid x:Name="Dgrd" ItemsSource="{x:Bind Lists,Mode=OneWay}".....>
......
</controls:DataGrid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...