Я хочу привязать элемент управления к родительскому элементу из контекстного меню в datatemplate.Связать с родительским элементом управления из контекстного меню в шаблоне данных
К сожалению, я ограниченный в .NET 3.5 и не могу использовать х: ссылочное расширение введенного в .net 4.
Ниже приведен пример того, что я пытаюсь сделать
<Window x:Class="WpfApplication17.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication17"
Name="window">
<Window.Resources>
<DataTemplate DataType="{x:Type local:Car}">
<Rectangle Width="100" Height="100" Fill="Red">
<Rectangle.ContextMenu>
<ContextMenu>
<MenuItem Header="{Binding Colour}"/>
<MenuItem Header="{Binding ElementName=window, Path=ActualWidth}"/>
</ContextMenu>
</Rectangle.ContextMenu>
</Rectangle>
</DataTemplate>
</Window.Resources>
</Window>
Но я получаю «Не могу найти источник для привязки со ссылкой« ElementName = window »из-за того, что контекстное меню не является частью визуального дерева.
Редактировать:
Это отлично работает! .. однако, это, кажется, не работает, когда я использую составную коллекцию таких как следующий
<Window.Resources>
<DataTemplate DataType="{x:Type local:Car}">
<Rectangle Width="100" Height="100" Fill="Red"
Tag="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}}">
<Rectangle.ContextMenu>
<ContextMenu>
<ContextMenu.ItemsSource>
<CompositeCollection>
<MenuItem Header="{Binding Colour}"/>
<MenuItem Header="{Binding Path=PlacementTarget.Tag.ActualWidth, RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
</CompositeCollection>
</ContextMenu.ItemsSource>
</ContextMenu>
<!--<ContextMenu>
<MenuItem Header="{Binding Colour}"/>
<MenuItem Header="{Binding Path=PlacementTarget.Tag.ActualWidth, RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
</ContextMenu>-->
</Rectangle.ContextMenu>
</Rectangle>
</DataTemplate>
</Window.Resources>
Это отлично работает! .. но он, похоже, не работает, когда я использую составную коллекцию? - см. мое редактирование – wforl
Извините, но для этого у меня нет решения. Тот же вопрос [здесь] (http://stackoverflow.com/q/11626114/620360). Возможно, подобная ошибка описана здесь (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/b15cbd9d-95aa-47c6-8068-7ae9f7dca88a). – LPL