次のような ListView があります。
コンボ ボックスは、TfsTask 型のオブジェクトの ObservableCollection にバインドされます。ユーザーが選択を変更したときに、同じ行のコントロールに、コンボ ボックスで選択した項目に含まれるデータを入力したいと考えています。たとえば、タスク「テスト」に特定の期間値と別の残りの値があるとします。ユーザーがコンボ ボックスでこのタスクを選択した場合、行のコントロールにこれらの値を入力したいと思います。
質問は次のとおりです。他の列のコントロールをコンボ ボックスの選択された項目にバインドするにはどうすればよいですか。コントロールに直接バインドする場合、その 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>