我有一个看起来像这样的 ListView:
组合框绑定到 TfsTask 类型的对象的 ObservableCollection。当用户更改选择时,我希望同一行上的控件填充组合框中所选项目中包含的数据。例如,假设任务“Tests”具有特定的Duration值和另一个Remaining值。如果用户在组合框中选择此任务,我想用这些值填充行上的控件。
这是一个问题:如何将其他列中的控件绑定到组合框的选定项。直接绑定到控件时,您可以使用它的 ElementName 来执行此操作,但如何在 DataTemplate 中执行此操作?
这是我在 XAML 中定义我的 ListView 的方式。我只以任务组合框和持续时间文本框为例
<ListView MinHeight="100" Name="m_taskList">
<ListView.View>
<GridView>
<GridViewColumn Width="140" Header="Task" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch">
<ComboBox Name="m_taskName" DisplayMemberPath="Name" SelectedValue="{Binding Path=TaskId, Mode=TwoWay}" SelectedValuePath="Id" ItemsSource="{Binding ElementName=This, Path=TfsTasks}/>
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="140" Header="Duration" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid >
<TextBox Text="{Binding ????}" />
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<!-- .... -->
</GridView>
</ListView.View>
</ListView>