0

他のクラスのリストを含むクラスがあり、そのリストを WPF のデータグリッドの項目ソースとして使用できるようにしたいと考えています。他のクラスの内部リストをドロップダウンまたはコンボボックスに表示することは可能ですか? ユーザーがコレクションを含む列をクリックしたときに別のサブフォームを表示することもできますが、メイン グリッドでコレクションを表示して編集できれば、より洗練されたものになります。

これは私のクラスがどのように見えるかです:

    private string ChainID = string.Empty;
    private string Chain = string.Empty;
    private string State = string.Empty;
    private string NonMerchID = string.Empty;
    private string ReceiptText = string.Empty;
    private string Amount = string.Empty;
    **private List<string> CT1 = new List<string>(5);**
    private string RecyclingFeeFlag = string.Empty;
    private string MinPrompt = string.Empty;
    private string MaxPrompt = string.Empty;

CT1 は私の問題です。

わかりましたので、私の XAML は次のようになります。

    <DataGrid AutoGenerateColumns="False" Height="289" HorizontalAlignment="Left" Margin="10,10,0,0" Name="dataGrid1" VerticalAlignment="Top"
              Width="481" ItemsSource="{Binding nonMerchData}">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Chain ID" Binding="{Binding Path=chainID}"></DataGridTextColumn>
            <DataGridTextColumn Header="Chain" Binding="{Binding Path=chain}"></DataGridTextColumn>
            <DataGridTextColumn Header="State" Binding="{Binding Path=state}"></DataGridTextColumn>
            <DataGridTextColumn Header="Non Merch ID" Binding="{Binding Path=nonMerchID}"></DataGridTextColumn>
            <DataGridTextColumn Header="Receipt Text" Binding="{Binding Path=receiptText}"></DataGridTextColumn>
            <DataGridTextColumn Header="Amount" Binding="{Binding Path=amount}"></DataGridTextColumn>
            <DataGridComboBoxColumn Header="CT" x:Name="_CT"></DataGridComboBoxColumn>
            <DataGridTextColumn Header="Recycling Fee Flag" Binding="{Binding Path=recyclingFeeFlag}"></DataGridTextColumn>
            <DataGridTextColumn Header="Min Prompt" Binding="{Binding Path=minPrompt}"></DataGridTextColumn>
            <DataGridTextColumn Header="Max Prompt" Binding="{Binding Path=maxPrompt}"></DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>

内部リストをコンボックス列にバインドする方法がわからないことを除けば、すべてうまく機能します。

4

1 に答える 1

0

アーキテクチャ上の間違いがあると説明します:ComboBoxの役割は選択リストを表示することなので、選択するものを選択すると、オブジェクトの外部からリストを提供する必要があります。しかし、ここでは、CT1 リストの内容を で表示/編集したいと考えていますComboBox。に移行しない限り、これはうまくいかないと思いますDataGridTemplateColumnが、このソリューションでさえシナリオに最適ではありません。

<DataGridTemplateColumn Header="template">
     <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ComboBox ItemsSource="{Binding Path=CT1}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>                            
</DataGridTemplateColumn>
于 2013-06-26T14:47:02.580 に答える