将Listview项目绑定到Infobox

时间:2017-02-05 15:43:09

标签: c# wpf listview binding

如何绑定所选项目的列表视图项属性? Infobox at the right

在左侧,我在列表视图中显示我的文件和站点,在右边我想在一种信息框(带标签的网格)中显示名称,站点数量等。 那么当我在listview中选择它时,如何将list [index] .name绑定到名称标签?

或者我应该使用Selection Changed Event?

2 个答案:

答案 0 :(得分:0)

您可以将GridView的SelectedItem属性绑定到ViewModel上的属性:

<DataGrid SelectedItem="{Binding SelectedItem,  Mode=TwoWay}"  >
 .....
</DataGrid>

并在SelectedItem属性中:

private YourItemType_selectedItem;
public YourItemType SelectedItem
{
    get { return _selectedItem; }
    set
    {
        if(value != _selectedItem)
        {
           _selectedItem = value;

           NotifyOfPropertyChange("SelectedItem");

           // notify InfoBox property changed
           NotifyOfPropertyChange("InfoBoxItem");
       }
    }
}

答案 1 :(得分:0)

您可以将InfoBox中的TextBlocks / TextBox绑定到ListView的SelectedItem属性。

给ListView一个x:名称:

<ListView x:Name="listView">
    <ListView.View>
        <GridView>
            <GridViewColumn Width="160" DisplayMemberBinding="{Binding Pos}" Header="Pos." />
            <GridViewColumn Width="160" DisplayMemberBinding="{Binding Name}" Header="Name" />
            <GridViewColumn Width="160" DisplayMemberBinding="{Binding Seitenzahl}" Header="Seitenzahl" />
        </GridView>
    </ListView.View>
</ListView>

...并使用ElementName绑定:

<TextBlock Text="{Binding SelectedItem.Name, ElementName=listView}" /> 
<TextBlock Text="{Binding SelectedItem.Pos, ElementName=listView}" />
<TextBlock Text="{Binding SelectedItem.Seitenzahl, ElementName=listView}" />

&#34;姓名&#34;,&#34; Pos&#34;和&#34; Seitenzahl&#34;是绑定到的相同属性的名称,并显示在ListView的列中。