ได้ข้อมูลในรายชื่อเข้าไปใน DataGrid กล่องคอมโบ

0

คำถาม

ฉันกำลังจะมีปัญหาเรื่องการหารายการจากรายชื่อไปเป็นกล่องคอมโบคอลัมน์ใน datagrid ใน WPF. นี่เป็นเรื่องใหม่สำหรับฉันดังนั้นช่วยจะเป็น greatly นเกียรติอย่างยิ่ง มันดูเหมือนมีหลายวิธีที่จะทำมันแต่ฉันยังไม่สามารถที่จะเข้าใจเรื่องพวกเขาไปทำงานแล้ว

"'

                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Positionname}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>

                <DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <ComboBox x:Name="poscombo Loaded="comboposloaded"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellEditingTemplate>
            
            </DataGridTemplateColumn>

รายการบด้วยข้อมูลเข้ารหัสหลัง

 List<Positions> PositionList = new List<Positions>();

ปรับปรุง: ฉันจบลงเพิ่มกำลังโหลดเหตุการณ์ต้องดึงรายการที่ itemsource. คำถามตอนนี้คือวิธีที่จะคอนที่เลือกไว้ออค่าจากกล่องคอมโบกลับเข้าไปในข้อความบล็อค?

C#เพิ่มไปยังเอาคอมโบงานหนักมากและไม่เคยหยุด

    private void comboposloaded(object sender, RoutedEventArgs e)
    {
        ComboBox cmb = (ComboBox)sender;
        cmb.ItemsSource = PositionList;
        cmb.DisplayMemberPath = "info";
        cmb.SelectedValuePath = "psnme";

    }
c# combobox datagrid wpf
2021-11-19 03:06:28
2

คำตอบที่ดีที่สุด

0

คำถามตอนนี้คือวิธีที่จะคอนที่เลือกไว้ออค่าจากกล่องคอมโบกลับเข้าไปในข้อความบล็อค?

ให้พวกคน psnme ทรัพย์สินของ Positions วัตถุที่ Positionname ทรัพย์สินของข้อมูลวัตถุ:

<ComboBox x:Name="poscombo" Loaded="comboposloaded"
          SelectedValue="{Binding Positionname, UpdateSourceTrigger=PropertyChanged}"/>
2021-11-19 15:00:41
0

ข้อมูลเชื่อมสำหรับ DataGridComboBoxColumn ดูค่อนข้างจะซับซ้อนกว่าคุณอาจจะคิดว่านะ

  1. ใช้ ObservableCollection แทนที่จะเป็นรายการ มันจะโดยอัตโนมัติปรับปรุงเนื้อหาของ DataGrid.
  2. คุณสามารถโหลดข้อมูลในกล่องคอมโบการใช้ ObjectDataProvide. เรื่องนี้จะยังทำให้แน่ใจว่าข้อมูลอยู่ในแหล่งโดยอัตโนมัติปรับปรุงเรียบร้อยแล้ว นี่คือทำงานตัวอย่าง
    public partial class MainWindow : Window
    {
        public EmployeeViewModel EmployeeVM;
        public MainWindow()
        {
            InitializeComponent();
            EmployeeVM = new EmployeeViewModel();
            MyDataGrid.ItemsSource = EmployeeVM.EmployeeList;
        }
    }

    public class Employee
    {
        public string Name { get; set; }
        public PositionEnum Position { get; set; }
    }

    public enum PositionEnum { Marketeer, Mechanic, Accountant };
    public class EmployeeViewModel 
    {
        public ObservableCollection<Employee> EmployeeList =
          new ObservableCollection<Employee>();
        public EmployeeViewModel()
        { 
            EmployeeList.Add(new Employee()
             { Name = "James Smith", Position = PositionEnum.Accountant });
            EmployeeList.Add(new Employee()
             { Name = "Robert Johnson", Position = PositionEnum.Marketeer });
            EmployeeList.Add(new Employee() 
             { Name = "David Williams", Position = PositionEnum.Mechanic });
        }
    }

XAML

<Window x:Class="WpfApp6.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:core="clr-namespace:System;assembly=mscorlib"
        xmlns:local="clr-namespace:WpfApp6"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800" >
    <Window.Resources>
        <!--Create list of enumeration values-->
        <ObjectDataProvider x:Key="myEnum" MethodName="GetValues" ObjectType="{x:Type core:Enum}">
            <ObjectDataProvider.MethodParameters>
                <x:Type Type="local:PositionEnum"/>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>
    </Window.Resources>
    <Grid>
        <DataGrid x:Name="MyDataGrid"
            AutoGenerateColumns="False"      
            HorizontalAlignment="Left"
            VerticalAlignment="Top"
            RowHeaderWidth="0" >
            <DataGrid.Columns>
                <DataGridTextColumn
                   Binding="{Binding Name}"
                   Header="Name" />
                <DataGridComboBoxColumn
                    Header="Order Status"
                    SelectedItemBinding="{Binding Position}"
                    ItemsSource="{Binding Source={StaticResource myEnum}}" />
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>

enter image description here

คิดว่าคุณต้องให้คุณคุ้นเคยตัวเองกับ MVVM รูปแบบและใช้เป็นพื้นตึกสำหรับเรื่องโปรแกรม

2021-11-19 12:22:47

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่