Список, связанный через ElementName, остается пустым
Я снова застрял в какой-то проблеме с привязкой данных.
На этот раз я хочу связать ListView
к SelectedItem
из 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
Porperty является IList<OrderYears>
,OrderYears
следующий объект значения данных, определенный в моем MainViewModel
:
public class OrderYears
{
public int? Year { get; set; }
public IList<Orders> DoneOrders { get; set; }
public int OrderCount { get; set; }
}
2 ответа
Наконец то я понял.
После нескольких часов проб и ошибок, наконец, заменив DataContext
с ItemsSource
сделал трюк...
Иногда все проще, чем вы думаете:)
Я думаю, что проблема в привязке ListView, потому что вы пытаетесь привязать к свойству с именем "Orders", которое не существует в объекте OrderYears. У вас есть свойство с именем DoneOrders, с которым вы можете связать (не путайте имя свойства с типом элементов в списке!), Но если вы связываете TextBlock с IList, вы просто получите guid для объекта IList.
Попробуйте что-то вроде этого, заменив ListView на ListBox (этого достаточно для того, что вы пытаетесь сделать здесь):
<ListBox DataContext="{Binding ElementName=gridViewOrderYears,
Path=SelectedItem.DoneOrders}"
DisplayMemberPath="Order_Date"/>
Нет необходимости создавать шаблон, элементы внутри ListBox будут отображаться как TextBlock. Обратите внимание, что вы можете извлечь выгоду из привязки к вложенным свойствам, таким как MainProperty.SubProperty.
Дайте мне знать, если это было полезно, привязки могут быть такой головной болью, когда вы начинаете...