我有一个ItemsControl绑定到一个对象列表。
它基本上在屏幕上显示一个绑定属性列表,每个属性旁边都有一个文本框和按钮,允许您向每个数据库字段添加其他信息。
在按钮的onclick中,我需要在文本框中取出字符串并将其存储在该项目的对象中。 XAML看起来有点像这样
<ItemsControl x:Name="ListDatabaseFields" ItemsSource="{Binding Path=SelectedImport.ColumnMappings}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<StackPanel>
<TextBlock Text="{Binding DatabaseColumn.Name}" TextWrapping="Wrap" Grid.Column="0"/>
<TextBox Name="txtNewFileField" Width="100"/>
<Button Name="Add" Content="Add File Field" Style="{StaticResource LinkButton}" Width="50" Click="Add_Click"/>
</StackPanel>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
什么是XAML中访问ColumnMapping的最佳方式,itemcontrol绑定到该项并更改其文件字段属性。
答案 0 :(得分:2)
我不确定我是否理解你的问题,请澄清这不是你想要的。
我已将此修改为我的测试应用程序,我的DataTemplate看起来像这样:
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"/>
<TextBox MinWidth="100" Name="tbNewName"/>
<Button MinWidth="100"
Tag="{x:Reference tbNewName}" Click="ButtonNewName_Click"
Content="Do Stuff"/>
</StackPanel>
</DataTemplate>
注意引用Button.Tag
的{{1}},我可以在处理程序中使用它,如下所示:
TextBox
private void ButtonNewName_Click(object sender, RoutedEventArgs e)
{
Employee emp = (sender as FrameworkElement).DataContext as Employee;
TextBox tbNewName = (sender as FrameworkElement).Tag as TextBox;
emp.Name = tbNewName.Text;
}
是继承的,因此发件人(Button)包含数据项,在您的情况下为DataContext
,ColumnMapping
为Tag
提供了TextBox
这就是改变房产所需要的一切。
如果您需要引用更多控件,可以在Tag
中创建一个数组。