我再次陷入一些数据绑定问题。
这次我想将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
答案 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
做了诀窍......
有时事情比你想象的容易:)