-1

次のコードがあります。

XAML:

<DataGrid x:Name="dgData" HorizontalAlignment="Left" Margin="133,96,0,0" VerticalAlignment="Top" Height="174" Width="156" AutoGenerateColumns="False" Grid.Column="1">
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Status" Width="100">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ComboBox Name="Combo1" Height="22" ItemsSource="{Binding SubjectSubList}" SelectedItem="{Binding SubjectSubList}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

分離コード:

public class TicketInfo
{           
    public List<string> SubjectSubList { get; set; }
}

static List<string> resolution = new List<string>();
static List<string> codec = new List<string>();

resolution.Add("1");
resolution.Add("2");

codec.Add("3");
codec.Add("4");

List<TicketInfo> ticketsList = new List<TicketInfo> 
{
    new TicketInfo{ SubjectSubList=resolution},
    new TicketInfo{ SubjectSubList=codec},               
};

オブジェクトを 2 つの異なるコンボボックスに別々に表示することはできますが、ユーザーが選択した値を取得できるとは思いません。「Selecteditem」はバインドされていますが、分離コードで値を取得するにはどうすればよいですか?

どんな助けでも大歓迎です。

4

2 に答える 2

0

SubjectSubListコントロールに割り当てた は、DataContext選択が変更されると更新されます。更新は双方向であるため、プロパティにはパブリック セッターとゲッターの両方が必要です。

于 2012-11-04T01:04:27.407 に答える
0

SelectedItem プロパティを追加する必要があるため、コンボボックスが文字列のリストである場合は、次のような selectedItem プロパティを持つことができます。

  public string SelectedSubject { get; set; }

、次に xaml で「SelectedSubject」を選択した項目にバインドします。

        <DataTemplate>
           <ComboBox Name="Combo1" Height="22" ItemsSource="{Binding SubjectSubList}" SelectedItem="{Binding SelectedSubject}"/>
        </DataTemplate>

次に、コード内でいつでも SelectedSubject にアクセスでき、その値はその時点でコンボボックスで選択されているものである必要があります。

しかし、データグリッドの特定の行の選択されたアイテムが必要ですか? それなら、selectedrow をコード パラメータに渡して、その選択した行の値にアクセスしようとするか、SelectedSubject を SubjectSubList のプロパティとして持つ必要があります。これは何らかのオブジェクトである必要があります。お役に立てれば。

于 2012-11-04T02:09:14.413 に答える