通过ElementName绑定的Listview保持为空

时间:2012-12-28 13:44:54

标签: c# xaml data-binding windows-store-apps elementname

我再次陷入一些数据绑定问题。
这次我想将ListView绑定到SelectedItem的{​​{1}}。我已经使用了这种类型的数据绑定,但现在我的GridView应该显示我ListView中所选项目的一些详细信息。尽管它们应该存在,但它中没有任何物品 GridView绑定GridView中的属性就好了。用MainViewModel替换ElementName属性似乎不是一个选项,因为它不是也没工作。
来源视图:

x:Resouces

此视图不绑定:

<GridView x:Name="gridViewOrderYears" 
          ItemsSource="{Binding SelectedCustOrders, Mode=TwoWay}"
          HorizontalAlignment="Left" 
          Grid.Row="1" 
          VerticalAlignment="Top" 
          Width="316" 
          Height="63" 
          Margin="657,316,0,0"
          SelectionMode="Single">
    <GridView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Border BorderThickness="1" BorderBrush="Aquamarine">
                    <StackPanel>
                        <TextBlock Text="{Binding Year}" FontSize="20"/>
                        <TextBlock Text="{Binding OrderCount}"/>
                    </StackPanel>
                </Border>
            </Grid>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>

<ListView HorizontalAlignment="Left" Height="231" Margin="657,401,0,0" Grid.Row="1" VerticalAlignment="Top" Width="316" DataContext="{Binding SelectedItem, ElementName=gridViewOrderYears}"> <ListView.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding DoneOrders.Order_Date, ElementName=gridViewOrderYears}" /> </DataTemplate> </ListView.ItemTemplate> </ListView> 属性是SelectedCustOrders
IList<OrderYears>正在关注我OrderYears中定义的数据值对象:

MainViewModel

2 个答案:

答案 0 :(得分:1)

我认为问题出在ListView绑定中,因为您尝试绑定到名为“Orders”的属性,该属性在OrderYears对象中不存在。您有一个名为DoneOrders的属性,您可以绑定它(不要将属性名称与列表中的元素类型混淆!),但如果将TextBlock绑定到IList,您将获得IList对象的guid。

尝试这样的事情,用ListBox替换你的ListView(这对你在这里尝试做的就够了):

 <ListBox DataContext="{Binding ElementName=gridViewOrderYears, 
                                Path=SelectedItem.DoneOrders}" 
          DisplayMemberPath="Order_Date"/>

无需创建模板,ListBox中的项目将显示为TextBlock。请注意,您可以从绑定到MainProperty.SubProperty等嵌套属性中受益。

如果这有用,请告诉我,当您开始时,绑定可能会非常令人头疼...

答案 1 :(得分:0)

最后我明白了 经过数小时的反复试验,最后用DataContext代替ItemsSource做了诀窍......
有时事情比你想象的容易:)