我有一个ListBox的Dockpanels显示"FieldName:, [_____](用户输入文本框)"。在用户填充字段之后,我正在寻找一种LINQ方法来获取这些对并将它们扔到KeyValuePair对象中。
<DataTemplate x:Key="ExtraLoginInfoTemplate">
<DockPanel>
<TextBlock Name="CodeID" Text="{Binding Path=ID,Converter={BLL:CodeMarkupExtension}}" />
<TextBox Name="Input"/>
</DockPanel>
</DataTemplate>
<ListBox Name="extraLoginInfoListBox" ItemsSource="{Binding}" ItemTemplate="{StaticResource ExtraLoginInfoTemplate}"/>
//codebehind
extraLoginInfoListBox.DataContext = cvList; //list of codevalue objects
private void submitButton_click(object sender, RoutedEventArgs e)
{
KeyValuePair<string,string> myInputs = /* ? some linq query to get the data from extraLoginInfoListBox */
}
你需要一个属性来绑定你的输入文本框来存储用户输入的任何值:
<TextBox Name="Input" Text="{Binding Path=IDValue, Mode=TwoWay}" />
然后,您可以使用以下代码:
var keyValuePairs = cvList.ToDictionary((obj) => obj.ID, (obj) => obj.IDValue);