wpf绑定到selectedItem

时间:2016-01-05 17:56:16

标签: c# wpf

在我的例子中,我从ListBox绑定到selectedItem。我想知道如何在堆栈面板中设置绑定,这样我就不必单独绑定到每个控件。

我可以绑定堆栈面板,然后子控件就像这样绑定(伪代码)

<StackPanel Grid.Column="2" Content="{Binding SelectedItem.Name, ElementName=ItemList}"/>
    <TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}"/>
    <TextBox Text="{Binding Kids, UpdateSourceTrigger=PropertyChanged}"/>
    <TextBox Text="{Binding Age, UpdateSourceTrigger=PropertyChanged}"/>
</StackPanel>

代码

<ListBox Grid.Column="0" 
                 x:Name="ItemList"
                 Background="AliceBlue" 
                 ItemsSource="{Binding VNodes}" 
                 SelectedItem="{Binding SelectedVNode, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <WrapPanel>
                        <TextBlock Text="Name: " />
                        <TextBlock Text="{Binding Name}" FontWeight="Bold" />
                    </WrapPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

        <GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Stretch" />

        <StackPanel Grid.Column="2">
            <TextBox Text="{Binding SelectedItem.Name, ElementName=ItemList, UpdateSourceTrigger=PropertyChanged}"/>
            <TextBox Text="{Binding SelectedItem.Kids, ElementName=ItemList, UpdateSourceTrigger=PropertyChanged}"/>
            <TextBox Text="{Binding SelectedItem.Age, ElementName=ItemList, UpdateSourceTrigger=PropertyChanged}"/>
        </StackPanel>

1 个答案:

答案 0 :(得分:2)

在WPF中,每个Item都有一个DataContext for Bindings,你可以将Stackpanel的DataContext设置为  {Binding ElementName=ItemList, Path=SelectedItem}

简单地说  <TextBox Text="{Binding Age, UpdateSourceTrigger=PropertyChanged}"/>

在你想要的StackPanel里面

;)