-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},               
};

我能够在两个不同的组合框中分别显示对象,但我不知道现在我可以检索用户选择的值。“Selecteditem”已绑定,但如何在代码隐藏中检索值?

任何帮助深表感谢。

4

2 回答 2

0

您需要添加一个 SelectedItem 属性,因此如果您的组合框是一个字符串列表,那么您可以有一个 selectedItem 属性,如下所示:

  public string SelectedSubject { get; set; }

, 然后在 xaml 中将“SelectedSubject”绑定到选定项:

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

然后在您的代码中的任何时候,您都可以访问 SelectedSubject,它的值应该是当时在组合框中选择的任何值。

但是现在你需要datagrid中某一行的选中项吗?那么您要么必须在代码参数中传递 selectedrow 并尝试访问该选定行的值,要么将 SelectedSubject 作为您的 SubjectSubList 中的属性,它必须是某种对象。希望这可以帮助。

于 2012-11-04T02:09:14.413 回答
0

SubjectSubListDataContext您分配给控件的内容将在选择更改时更新。由于更新是双向的,因此该属性必须同时具有公共 setter 和 getter。

于 2012-11-04T01:04:27.407 回答