Ich versuche, WPF zu lernen und scheint einen Fehler zu bekommen, den ich wirklich nicht vollständig verstehe.Kann nicht finden, Quelle für die Bindung mit Verweis mit RibbonComboBox
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.Ribbon.RibbonWindow', AncestorLevel='1''. BindingExpression:Path=WindowState; DataItem=null; target element is 'Ribbon' (Name=''); target property is 'NoTarget' (type 'Object')
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.Ribbon.RibbonWindow', AncestorLevel='1''. BindingExpression:Path=IsActive; DataItem=null; target element is 'Ribbon' (Name=''); target property is 'NoTarget' (type 'Object')
Hier ein Abschnitt meines XAML. Ich kann nicht sagen, ob die Fehler gerade begonnen haben, aber ich habe Code optimiert, der mit den zwei RibbonComboBoxe
es unter der Home Header funktioniert. (Das <Ribbon>
Element ist in einem <Grid>
Element.)
Kann mir jemand helfen, dieses Problem zu lösen? Der Code verhält sich nicht ganz korrekt und ich kann nicht sagen, ob dieser Fehler damit zusammenhängt.
<Ribbon>
<Ribbon.ApplicationMenu>
<RibbonApplicationMenu>
<RibbonApplicationMenuItem Header="_Preview" ImageSource="Images/preview.png"></RibbonApplicationMenuItem>
<RibbonSeparator></RibbonSeparator>
<RibbonApplicationMenuItem Name="Save" KeyTip="S" Header="_Save" ImageSource="Images/save.png" ToolTipTitle="Save" ToolTipDescription="Save the current article and keep editing" Click="Save_Click"></RibbonApplicationMenuItem>
<RibbonSeparator></RibbonSeparator>
<RibbonApplicationMenuItem Name="SaveAndExit" KeyTip="X" Header="Save and E_xit" ToolTipTitle="Save and Exit" ToolTipDescription="Save the current article and close window" Click="SaveAndExit_Click"></RibbonApplicationMenuItem>
<RibbonApplicationMenuItem Name="AbortAndExit" Header="_Abort Edit" ToolTipTitle="Abort Edit" ToolTipDescription="Close window without saving changes to this article" Click="AbortAndExit_Click"></RibbonApplicationMenuItem>
</RibbonApplicationMenu>
</Ribbon.ApplicationMenu>
<RibbonTab Header="Home">
<RibbonGroup Header="Category">
<RibbonComboBox Label="Category:" SelectionBoxWidth="250">
<RibbonGallery SelectedItem="{Binding Path=Categories.SelectedItem}">
<RibbonGalleryCategory IsSharedColumnSizeScope="True" DisplayMemberPath="Text" ItemsSource="{Binding Path=Categories.Items}">
</RibbonGalleryCategory>
</RibbonGallery>
</RibbonComboBox>
<RibbonComboBox Label="Subcategory:" SelectionBoxWidth="250">
<RibbonGallery SelectedItem="{Binding Path=Subcategories.SelectedItem}">
<RibbonGalleryCategory IsSharedColumnSizeScope="True" ColumnsStretchToFill="True" MaxColumnCount="1" DisplayMemberPath="Text" ItemsSource="{Binding Path=Subcategories.Items}">
</RibbonGalleryCategory>
</RibbonGallery>
</RibbonComboBox>
<RibbonButton Label="Edit Categories" Command="local:EditCommands.Categories" SmallImageSource="Images\categories_sm.png" ToolTipTitle="Edit Categories" ToolTipDescription="Add, edit or delete categories and subcategories" ToolTipImageSource="Images\categories_sm.png"></RibbonButton>
</RibbonGroup>
<RibbonGroup Header="Author">
<RibbonTwoLineText Text="[email protected]"></RibbonTwoLineText>
<RibbonButton Label="Set Author" Command="local:EditCommands.Header1" SmallImageSource="Images\h1_sm.png" ToolTipTitle="Header 1" ToolTipDescription="Format selected text as a level 1 header" ToolTipImageSource="Images\h1.png"></RibbonButton>
</RibbonGroup>
<RibbonGroup Header="Settings">
<RibbonCheckBox Name="chkApproved" Label="Approved"></RibbonCheckBox>
<RibbonCheckBox Name="chkDeprecated" Label="Deprecated"></RibbonCheckBox>
<RibbonButton Name="btnMetadata" Label="Metadata" SmallImageSource="Images\metadata_sm.png" ToolTipTitle="Metadata" ToolTipDescription="Edit article metadata" ToolTipImageSource="Images\metadata.png" Click="btnMetadata_Click"></RibbonButton>
</RibbonGroup>
<RibbonGroup Header="History">
<RibbonButton Label="Edit Updates" Command="local:EditCommands.EditHistory" SmallImageSource="Images\history_sm.png" LargeImageSource="Images\history.png" ToolTipTitle="Edit Updates" ToolTipDescription="Edit update history for this article"></RibbonButton>
</RibbonGroup>
</RibbonTab>
UPDATE:
Basierend auf IlVic Antwort, änderte ich meine Window
zu einem RibbonWindow
. Aber dann bekomme ich den folgenden Fehler.
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 'RibbonGalleryItem' (Name=''); target property is 'HorizontalContentAlignment' (type 'HorizontalAlignment')
Danke, ich wusste nicht, dass ich das brauchte. Ich muss noch einiges über WPF und XAML lernen. Ich habe Ihre Antwort als die richtige markiert, aber wenn es Ihnen nichts ausmacht, einen Blick darauf zu werfen, bekomme ich jetzt einen ähnlichen, aber anderen Fehler nach der Änderung. Ist 'RibbonGalleryItem' ein Element, das ich _must_ manuell zu meinem XAML hinzufügen muss? –
Es tut mir leid @ JonathanWood, aber ich bin nicht in der Lage, Ihre zweite Ausgabe zu reproduzieren. Wahrscheinlich sollten Sie weitere Details zu Ihrem XAML und Ihrem Code hinzufügen (vielleicht können Sie darüber nachdenken, eine neue Frage zu stellen). –