我有以下代码:
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”已绑定,但如何在代码隐藏中检索值?
非常感谢任何帮助。
答案 0 :(得分:0)
SubjectSubList
中的 DataContext
将会更新。该属性必须同时具有公共setter和getter,因为更新是双向的。
答案 1 :(得分:0)
你需要添加一个SelectedItem属性,所以如果你的组合框是一个字符串列表,那么你可以有一个这样的selectedItem属性:
public string SelectedSubject { get; set; }
,然后在xaml中将“SelectedSubject”绑定到selecteditem:
<DataTemplate>
<ComboBox Name="Combo1" Height="22" ItemsSource="{Binding SubjectSubList}" SelectedItem="{Binding SelectedSubject}"/>
</DataTemplate>
然后,在您的代码中,您可以随时访问SelectedSubject,其值应该是当时在组合框中选择的任何值。
但是现在你需要数据网格中某一行的选定项目?那么你要么必须在代码参数中传递selectedrow并尝试访问该选定行的该值,要么将SelectedSubject作为SubjectSubList中的属性,这必须是某种对象。希望这会有所帮助。