Ich habe folgende XAML:Bindung an Itemspresenter Eigenschaft
<ItemsControl ItemsSource="{Binding...}" >
<ItemsControl.Template>
<ControlTemplate>
<ItemsPresenter x:Name="testGrid"/>
</ControlTemplate>
</ItemsControl.Template>
<!--Use the ItemsPanel property to specify a custom UniformGrid that
holds the laid out items.-->
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<tools:UniformGridRtL Columns="8" x:Name="testGrid2" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<!--Use the ItemTemplate to set a DataTemplate to define
the visualization of the data objects. This DataTemplate
specifies that each data object appears RegisterBit appears
as a CheckBox bound to RegisterBit properties. It also defines
a custom template for the checkbox.-->
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox... />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Label>
<Binding ElementName="testGrid2" Path="property_of_UniformGridRtL"/>
</Label>
Grundsätzlich habe ich ein eigenes Panel (UniformGridRtL) eingestellt als Itemspaneltemplate, das die Itemspresenter im Itemscontrol Vorlage wird. UniformGridRtL hat eine Eigenschaft, an die ich gerne binden möchte, aber ElementName scheint in der Label-Bindung nicht zu funktionieren. Wie kann ich an eine Eigenschaft eines generierten ItemsControl-Elementhosts binden?
Danke für die Umgehung ... Es funktioniert in der Tat, wenn das bindende Ziel auch kein Template-Objekt ist. Was passiert, wenn ich an ein gleichrangiges Element in derselben ItemsControl ControlTemplate binden möchte? – Mart
Wenn Sie ein gleichrangiges Quellenelement haben, verwenden Sie anstelle des Senders (namedItemsControl) .Template.FindName() wie hier beschrieben: http://stackoverflow.com/questions/820201/how-to-access-a-wpf- control-located-in-a-controlletemplate –
Entschuldigung, mein Kommentar wurde abgeschnitten - wenn das Ziel Template ist, können Sie die gleiche Strategie mit Template.FindName() auch verwenden - der Code wird nur ein bisschen unordentlicher. Stellen Sie sicher, dass Sie weiterhin ein Loaded-Ereignis irgendeiner Art verwenden, oder Sie haben noch keine visuelle Struktur und FindName gibt null zurück. –