Wiem, że były pytania dotyczące tego błędu, znalazłem je i czytałem, ale szczerze mówiąc, nic nie rozumiałem.Nie mogę znaleźć źródła do powiązania z odniesieniem ... databound Problem z listView
Mam okno WPF z dwoma listViewami databound. Jeden jest powiązany z obiektami biznesowymi (moje klasy niestandardowe), inny z Dictionary<string, string>
. Wszystko wydaje się wyglądać dobrze w czasie wykonywania, ale ja dostaję błędy w oknie Output:
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. BindingExpression:Path=HorizontalContentAlignment; DataItem=null; target element is 'ListViewItem' (Name=''); target property is 'HorizontalContentAlignment' (type 'HorizontalAlignment')
i taka sama dla VerticalContentAlignment
.
Mimo że listy listew bost zapełniane są przedmiotami zgodnie z oczekiwaniami, w rzeczywistości powoduje zauważalne opóźnienie podczas ładowania okna.
Poszukując odpowiedzi, znalazłem ten wątek http://social.msdn.microsoft.com/Forums/en/wpf/thread/f3549b2b-5342-41a1-af04-d55e43c48768 - i zaimplementowałem sugerowane rozwiązanie, dostarczając wartości domyślne zarówno HorizontalContentAlignment
i VerticalContentAlignment
w obu ListViews. To nie pomogło.
Oto XAML:
ListView 1:
<ListView Margin="15,50,15,15" Name="lvLanguageCodes" FontSize="13" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"> <ListView.Resources> <Style TargetType="ListViewItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch" /> <Setter Property="VerticalContentAlignment" Value="Stretch" /> </Style> </ListView.Resources> <ListView.ItemsPanel> <ItemsPanelTemplate> <UniformGrid Columns="3" /> </ItemsPanelTemplate> </ListView>
ListView 2
<ListView.Resources> <Style TargetType="ListViewItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch" /> <Setter Property="VerticalContentAlignment" Value="Stretch" /> <EventSetter Event="Selected" Handler="lvItemSelected" /> </Style> <Style x:Key="GrayOutMappedColumn" TargetType="{x:Type TextBlock}"> <Style.Triggers> <DataTrigger Binding="{Binding Mapped}" Value="False"> <Setter Property="TextElement.Foreground" Value="Black" /> </DataTrigger> </Style.Triggers> <Setter Property="TextElement.Foreground" Value="DarkGray" /> </Style> </ListView.Resources> <ListView.GroupStyle> <GroupStyle> <GroupStyle.HeaderTemplate> <DataTemplate> <Border BorderBrush="LightGray" BorderThickness="0,0,0,1"> <TextBlock FontSize="12" FontWeight="Bold" Margin="0,10" Text="{Binding Name}" /> </Border> </DataTemplate> </GroupStyle.HeaderTemplate> </GroupStyle> </ListView.GroupStyle> <ListView.ItemsPanel> <ItemsPanelTemplate> <UniformGrid Columns="4" /> </ItemsPanelTemplate> </ListView.ItemsPanel> <ListView.ItemTemplate> <DataTemplate> <StackPanel ClipToBounds="False" HorizontalAlignment="Stretch" Width="Auto"> <TextBlock HorizontalAlignment="Stretch" Style="{StaticResource GrayOutMappedColumn}" Text="{Binding Path=FriendlyName}" Width="Auto" /> </StackPanel> </DataTemplate> </ListView.ItemTemplate>
wiązania danych kod:
lvLanguageCodes.ItemsSource = languages;
lvLanguageCodes.SelectedValuePath = "Key";
lvLanguageCodes.DisplayMemberPath = "Value";
2:
lvDataTypes.ItemsSource = AssignDataType.datatypes;
gdzie datatypes
jest ObservableCollection<Gate>
, gdzie Gate
jest moją klasą biznesową (wdrażającą INotifyPropertyChanged
, IComparable
i nie jest w tym nic specjalnego).
Dlaczego pojawia się błąd? Dlaczego próbuje powiązać te właściwości dopasowania z czymkolwiek, jeśli ustawię ich wartości jawnie?
Dlaczego ustawić niektóre właściwości ListView za pomocą stylu? Byłoby użyteczne jako zasoby wspólne lub podobne. Deklaruj je bezpośrednio w elemencie ListView. –
Nie widzę powiązania 'RelativeSource' w żadnym z XAML. Czy możesz to opublikować? – Rachel
Tego właśnie szukałem, ale po prostu nie ma! XAML nie zawiera nawet ciągu "relat" (wielkość liter nie ma znaczenia) –