私はproject.Iで作業しています空の "Observable Collection"を埋めるためにDataGridを使用していて、それがexpected.the主な問題として働いています。 "Total Price"私がデータグリッドビューに入力するとき "製品"。 "Pricesrc"は、 "総価格"を表示する必要があるテキストボックスにバインドされています。今どのように私はこのタスクを達成する。ヘルプは高く評価されます。Observable Collection行を追加して列を合計します。WPF
Thは私の製品クラスです。
public class product_data
{
private String _Name;
private String _Brand;
private String _Price;
public string Name
{
get { return _Name; }
set { _Name = value; }
}
public string Brand
{
get { return _Brand; }
set { _Brand = value; }
}
public string Price
{
get { return _Price; }
set
{
_Price = value;
}
}
}
これは私のViewModelクラスです。
public class ViewModel:INotifyPropertyChanged
{
public int Pricesrc
{
set;get;
}
public ObservableCollection<product_data> listsrc;
public ObservableCollection<product_data> product_data
{
get { return listsrc; }
set
{
listsrc = value;
}
}
public ViewModel()
{
listsrc = new ObservableCollection<Pages.Product.product_data>();
}
public event PropertyChangedEventHandler PropertyChanged;
public void onPropertyChanged(string prop)
{
PropertyChanged?.Invoke(this,new PropertyChangedEventArgs(prop));
}
}
これは私のXAMLです:
<Grid Background="#C82C2C2C">
<StackPanel Orientation="Vertical" Background="LightGray" Margin="150,60,150,60">
<StackPanel.Effect>
<DropShadowEffect BlurRadius="44"/>
</StackPanel.Effect>
<StackPanel Background="#FF886AF0" Height="80">
<TextBlock Text="Bill" FontSize="25" FontWeight="SemiBold" HorizontalAlignment="Center" Margin="0,20,0,0" Foreground="#FFE6E6E6"></TextBlock>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,35,0,0">
<TextBox x:Name="txt_Total" ToolTip="Total" Text="{Binding Pricesrc}" Height="50" Background="White" Foreground="#FFB6B2B2" BorderBrush="{x:Null}" BorderThickness="3" HorizontalAlignment="Center" Width="630" FontWeight="DemiBold" FontSize="16" VerticalContentAlignment="Center" Style="{DynamicResource flat_ui_textbox}" GotFocus="textboxes_gotFocus" LostFocus="textboxes_lostFocus"/>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" >
<TextBox x:Name="txt_advance" ToolTip="Advance" Text="Advance" Height="50" Background="White" Foreground="#FFB6B2B2" BorderBrush="{x:Null}" BorderThickness="3" HorizontalAlignment="Center" Width="315" FontWeight="DemiBold" FontSize="16" VerticalContentAlignment="Center" Style="{DynamicResource flat_ui_textbox}" GotFocus="textboxes_gotFocus" LostFocus="textboxes_lostFocus"/>
<TextBox x:Name="txt_pending" ToolTip="Pending" Text="Pending" Height="50" Background="White" Foreground="#FFB6B2B2" BorderBrush="{x:Null}" BorderThickness="3" HorizontalAlignment="Center" Width="315" FontWeight="DemiBold" FontSize="16" VerticalContentAlignment="Center" Style="{DynamicResource flat_ui_textbox}" GotFocus="textboxes_gotFocus" LostFocus="textboxes_lostFocus"/>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" >
<TextBox x:Name="txt_date" ToolTip="Date" Text="Date" Height="50" Background="White" Foreground="#FFB6B2B2" BorderBrush="{x:Null}" BorderThickness="3" HorizontalAlignment="Center" Width="475" FontWeight="DemiBold" FontSize="16" VerticalContentAlignment="Center" Style="{DynamicResource flat_ui_textbox}" GotFocus="textboxes_gotFocus" LostFocus="textboxes_lostFocus"/>
<TextBlock Margin="48,0,0,0" Text="Is Paid" VerticalAlignment="Center" FontWeight="Bold" FontSize="18" Foreground="#FF818181"/>
<CheckBox Margin="16,0,0,0" Height="35" Width="35" BorderBrush="{x:Null}" Style="{DynamicResource flat_ui_checkboxes}"></CheckBox>
</StackPanel>
<GroupBox Header="Product" Margin="150,35,150,0" Foreground="#FF7E7E7E" FontSize="24" FontWeight="DemiBold">
<DataGrid x:Name="product_grid" ItemsSource="{Binding product_data,Mode=TwoWay}" HorizontalAlignment="Center" Margin="0,0,0,0" Height=" 350" Background="White" Width="973.5" AutoGenerateColumns="False" CanUserAddRows="True">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name,Mode=TwoWay}" ></DataGridTextColumn>
<DataGridTextColumn Header="Brand" Binding="{Binding Brand,Mode=TwoWay}"></DataGridTextColumn>
<DataGridTextColumn Header="Price" Binding="{Binding Price,Mode=TwoWay}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
<Button Width="200" Height="55" Background="#FF2DCC70" Margin="0,0,0,0" Template="{DynamicResource flat_add_green_btn}" Command="{Binding Add_Customer_Command}" Click="Button_Click" />
</StackPanel>
</Grid>
回答をお寄せいただきありがとうございますが、問題が解決しましたが、「グリッドの価格の最後の行は追加されていません....どんな解決策ですか?」そして「Pricesrc = listsrc.Sum prod => prod.Price) "本当に...ありがとうございます。 –
また、空の列をクリックすると、イベントがトリガーされますが、行が追加されたときにトリガーされません。 –
あの、 合計は、基本的に与えられたプロパティの値を合計します。ただし、IEnumerable(つまり、リスト、配列など)の場合は、その値は文字列であるため、文字列の場合はintまたはdoubleなどの適切な数値型に変換してください。 。 –
Shadowed