0

Datagrid の RowdetailsTemplate に Combobox があります。列を切り替えると、前に選択した値で Datagridcolumn の値が自動的に変更されます。Datagrid 列の値は、コンボボックスの値が変更された場合にのみ変更する必要があります

public class BMFill
{
    public BMFill()
    {
         colCBArt.Add(new CBArt { Name = "test" , Nr = 0 });
        colCBArt.Add(new CBArt { Name = "hallo", Nr = 1 });
        colCBArt.Add(new CBArt { Name = "welt", Nr = 2 });
        colCBArt.Add(new CBArt { Name = "blubb", Nr = 3 });
        colCBArt.Add(new CBArt { Name = "lalalala", Nr = 4 });

    }
    List<CBArt> colCBArt = new List<CBArt>();
    CollectionViewSource cvsCBArt = null;


    public ICollectionView ViewCBArt
    {
        get
        {
            if (cvsCBArt == null) cvsCBArt = new CollectionViewSource() { Source = colCBArt };
            return cvsCBArt.View;
        }
    }


    public class CBArt
    {
        public string Name { get; set; }
        public int Nr { get; set; }
    }
}

<Window.Resources>
    <local:BMFill x:Key="vm"/>
</Window.Resources>
<DataGrid x:Name="dg">
    <DataGrid.RowDetailsTemplate>
        <DataTemplate>
            <ComboBox Margin="10,10,10,10" Grid.Column="1" Grid.Row="1"
                                  SelectedValuePath="Nr"
                                  SelectedValue="{Binding NrDG,UpdateSourceTrigger=PropertyChanged}"
                                  DisplayMemberPath="Name" 
                                  ItemsSource="{Binding Source={StaticResource vm}, Path=ViewCBArt}"
                                  />
        </DataTemplate>
    </DataGrid.RowDetailsTemplate>
</DataGrid>

私の問題を理解し、助けてくれることを願っています =)

4

2 に答える 2