C#/WPF (MVVM)

[C# / WPF / MVVM / Prism] DataGrid Binding # 1 - 생성

F급 개발자 2024. 7. 15. 19:35
728x90
반응형

개발환경 : VS 2022 / C# / WPF / Prism (MVVM Tool) / MaterialDesign (Design Tool) 으로 작성하였습니다.
 
- MainView.xaml

       <DataGrid
           AutoGenerateColumns="False" IsReadOnly="False" CanUserAddRows="False"
           FontSize="13"
           materialDesign:DataGridAssist.CellPadding="5 5 5 3"
           materialDesign:DataGridAssist.ColumnHeaderPadding="10 8 2 5"
           ItemsSource="{Binding LoraDataItemSource}">
           <DataGrid.Columns>
               <DataGridTemplateColumn Header="Lora Name">
                   <DataGridTemplateColumn.CellTemplate>
                       <DataTemplate>
                           <TextBox
                               BorderThickness="0"
                               Text="{Binding LoraName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                               TextAlignment="Center"/>
                       </DataTemplate>
                   </DataGridTemplateColumn.CellTemplate>
               </DataGridTemplateColumn>
               <DataGridTemplateColumn Header="전압 [V]">
                   <DataGridTemplateColumn.CellTemplate>
                       <DataTemplate>
                           <TextBox
                               BorderThickness="0"
                               Text="{Binding LoraVoltage, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                               TextAlignment="Center" />
                       </DataTemplate>
                   </DataGridTemplateColumn.CellTemplate>
               </DataGridTemplateColumn>
               <DataGridTemplateColumn Header="전류 [A]">
                   <DataGridTemplateColumn.CellTemplate>
                       <DataTemplate>
                           <TextBox
                               BorderThickness="0"
                               Text="{Binding LoraCurrent, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                               TextAlignment="Center" />
                       </DataTemplate>
                   </DataGridTemplateColumn.CellTemplate>
               </DataGridTemplateColumn>
           </DataGrid.Columns>
       </DataGrid>

 
 
- LoraDataIS.cs

public class LoraDataIS : BindableBase
{
    private string loraName;
    private string loraVoltage;
    private string loraCurrent;

    public string LoraName
    {
        get => loraName;
        set => SetProperty(ref loraName, value);
    }
    public string LoraVoltage
    {
        get => loraVoltage;
        set => SetProperty(ref loraVoltage, value);
    }
    public string LoraCurrent
    {
        get => loraCurrent;
        set => SetProperty(ref loraCurrent, value);
    }
}

 

반응형

 
- MainViewModel.cs

public class MainViewModel : BindableBase
{
    private ICollectionView loraDataItemSource;

    public ICollectionView LoraDataItemSource
    {
        get => loraDataItemSource;
        set => SetProperty(ref loraDataItemSource, value);
    }

    public ObservableCollection<LoraDataIS> loraDatas { get; set; } = new ObservableCollection<LoraDataIS>();

    public MainViewModel()
    {
        LoraDataItemSource = CollectionViewSource.GetDefaultView(loraDatas);
        Initialize();
    }


    private void Initialize()
    {
        for (int i = 0; i < 10; i++)
        {
            loraDatas.Add(new LoraDataIS()
            {
                LoraName = $"Lora {i + 1}",
                LoraVoltage = "",
                LoraCurrent = "",
            });
        }
    }
}

 


- 결과
 

 


728x90

 

728x90
반응형