Sé que ha habido preguntas con respecto a este error, he encontrado algunos y los he leído, pero para ser honesto, no entendí nada.No se puede encontrar el origen del enlace con la referencia ... problema de ListView de datos enlazados
Tengo una ventana WPF con dos ListViews de datos enlazados. Uno está vinculado a los objetos comerciales (mis clases personalizadas), otro a un Dictionary<string, string>
. Todo parece mirar bien en tiempo de ejecución, pero estoy recibiendo errores en la ventana Salida:
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')
y lo mismo para VerticalContentAlignment
.
Aunque los ListViews de bost se llenan con elementos como se esperaba, en realidad causa un retraso notable al cargar la ventana.
Buscando una respuesta, encontré este hilo http://social.msdn.microsoft.com/Forums/en/wpf/thread/f3549b2b-5342-41a1-af04-d55e43c48768 - e implementé la solución sugerida, proporcionando los valores predeterminados de HorizontalContentAlignment
y VerticalContentAlignment
en ambas ListViews. No ayudó.
Aquí está el 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>
El enlace de datos de código:
lvLanguageCodes.ItemsSource = languages;
lvLanguageCodes.SelectedValuePath = "Key";
lvLanguageCodes.DisplayMemberPath = "Value";
2:
lvDataTypes.ItemsSource = AssignDataType.datatypes;
donde datatypes
es ObservableCollection<Gate>
, donde Gate
es mi clase de negocios (implementando INotifyPropertyChanged
, IComparable
y nada especial al respecto).
¿Por qué me sale un error? ¿Por qué está intentando vincular estas propiedades de alineación a cualquier cosa, si configuro sus valores de forma explícita?
¿Por qué establece alguna propiedad del ListView usando un estilo? Eso sería útil como recurso compartido o similar. Declárelos directamente en el elemento ListView. –
No veo el enlace 'RelativeSource' en ninguno de sus XAML. ¿Puedes publicarlo? – Rachel
Eso es lo que busqué, ¡pero simplemente no hay ninguno! El XAML ni siquiera contiene la cadena "relat" (sin distinción entre mayúsculas y minúsculas) –