我知道有關於這個錯誤的問題,我找到了一些並閱讀它們,但說實話,我不明白一件事。找不到與參考綁定的源... databound ListView問題
我有一個WPF窗口與兩個數據綁定ListViews。一個綁定到業務對象(我的自定義類),另一個綁定到Dictionary<string, string>
。一切似乎看上去正常在運行,但我發現在輸出窗口中的錯誤:
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')
與同爲VerticalContentAlignment
。
即使bost ListViews按預期填充項目,但實際上在加載窗口時會導致明顯的延遲。
尋找答案,我發現這個線程http://social.msdn.microsoft.com/Forums/en/wpf/thread/f3549b2b-5342-41a1-af04-d55e43c48768 - 我實現了建議的解決方案,在兩個ListView中提供默認值HorizontalContentAlignment
和VerticalContentAlignment
。它沒有幫助。
這裏的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>
數據綁定代碼:
lvLanguageCodes.ItemsSource = languages;
lvLanguageCodes.SelectedValuePath = "Key";
lvLanguageCodes.DisplayMemberPath = "Value";
2:
lvDataTypes.ItemsSource = AssignDataType.datatypes;
其中datatypes
是ObservableCollection<Gate>
,其中Gate
是我的商務艙(實施INotifyPropertyChanged
,IComparable
和其他沒有什麼特別的)。
爲什麼我會收到錯誤?爲什麼它試圖將這些對齊屬性綁定到任何東西,如果我明確地設置它們的值?
爲什麼你通過使用樣式設置ListView的某些屬性?這將作爲共享資源或類似的有用。直接在ListView元素上聲明它們。 –
我在任何一個XAML中都看不到'RelativeSource'綁定。你可以發佈嗎? – Rachel
這就是我期待的,但沒有任何! XAML甚至不包含字符串「relat」(不區分大小寫) –