簡體   English   中英

了解綁定DataGridComboBoxColumn ItemsSource和SelectedItem

[英]Understand Binding DataGridComboBoxColumn Itemssource and SelectedItem

我不了解如何綁定到DataGridComboBoxColumn。 我的DataGrid TextColum顯示我的RowEntries中的值,但ComboBoxColumn未填充。

我有一個名為RowEntries的RowEntryView的ObservableCollection:

public class DataTypes : RowEntryView
{
    private string _value;
    public string[] ValuesPossible {get; set; }
    public string Value 
    {
        get
        {
            return _value;
        }

        set
        {
            _value = value;
             OnPropertyChanged(new PropertyChangedEventArgs("Value"));
        }
    }
}

我的DatagridTextColum顯示了Value變量。 我的DataGridComboBoxColumn為空白。 可能的值用{“ A”,“ B”,“ C”}}填充,值用“ A”填充

<DataTemplate x:Name="myDataTemplate">
       <DataGrid RowHeight="30" VerticalContentAlignment="Center" x:Name="myDataGridMain" CanUserAddRows="False" AutoGenerateColumns="False" ItemsSource="{Binding RowEntries}" >
       <DataGrid.Columns>    
       <DataGridTextColumn Width="4*" IsReadOnly="True" x:Name="dataGridColumnDescription" Header="Value" Binding="{Binding Value}">
       </DataGridTextColumn>
       <DataGridComboBoxColumn Header="Type" ItemsSource="{Binding ValuesPossible}" SelectedItemBinding="{Binding Value}"></DataGridComboBoxColumn>
                 </DataGrid.Columns>
                    </DataGrid>
                </DataTemplate>

在此輸入圖像描述

ItempsSource是您要顯示的項的列表。 SelectedItem(不是selectedItemBinding)是您選擇的對象。 基本上,您需要具有SelectedItem =“ {Binding Value}”。 現在,為了能夠將每個新選擇的更改通知您數據上下文,您的對象必須實現INotifyPropertyChanged,然后您的綁定將變為:SelectedItem =“ {Binding Value,UpdateSourceTrigger = PropertyChanged,Mode = TwoWay}”。 您會在網上找到很多示例。

然后,我建議使用DataGridTemplateColumn:

                            <DataGridTemplateColumn Header="Type">
                                <DataGridTemplateColumn.CellEditingTemplate>
                                    <DataTemplate>
                                        <ComboBox   ItemsSource="{Binding ValuesPossible}"
                                                    SelectedItem="{Binding Value, UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"></ComboBox>
                                    </DataTemplate>
                                       </DataGridTemplateColumn.CellEditingTemplate>
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBlock  Text="{Binding}"></TextBlock>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM