【发布时间】:2023-03-08 01:56:01
【问题描述】:
简单明了:我需要将ContextMenu 项目的一些属性绑定到DataTemplate 中其父项的属性。
我找不到访问它的方法,因为ElementName 不起作用,而RelativeSource 允许我只使用Self 或TemplatedParent。
这是我的代码:
<telerikPrimitives:RadDataBoundListBox Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="3"
ItemsSource="{Binding Transfers.Keys, Source={StaticResource TransfersManager}, Mode=OneWay}">
<telerikPrimitives:RadDataBoundListBox.ItemTemplate>
<DataTemplate>
<toolkit:TransferControl x:Name="TransferControl"
Header="{Binding Converter={StaticResource TransferMonitorToDocumentTitleConverter}}"
IsContextMenuEnabled="False"
Icon="{Binding Converter={StaticResource TransferMonitorToDocumentIconUriConverter}}"
AutoHide="False"
Monitor="{Binding}"
Language="it-IT"
StatusTextBrush="Black"
Foreground="Black">
<toolkit:TransferControl.HeaderTemplate>
<DataTemplate>
<StackPanel>
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu>
<toolkit:MenuItem Header="item1"
IsEnabled="{Binding Monitor Property in the TransferControl object}"
/>
<toolkit:MenuItem Header="item2"/>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
<Rectangle Fill="Transparent" Height="30"/>
<ContentControl Content="{Binding}"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Foreground="Black" />
</StackPanel>
</DataTemplate>
</toolkit:TransferControl.HeaderTemplate>
</toolkit:TransferControl>
</DataTemplate>
</telerikPrimitives:RadDataBoundListBox.ItemTemplate>
我要绑定的是:
<toolkit:MenuItem Header="item1"
IsEnabled="{Binding Monitor Property in the TransferControl object}"
/>
我想将它绑定到<toolkit:TransferControl x:Name="TransferControl" ... /> 对象的Monitor 属性。
【问题讨论】:
-
你试过
IsEnabled="{Binding DataContext.Monitor, ElementName=TransferControl}"。当元素位于另一个项目的 DataTemplate 中时,我没有对其进行测试,但我在绑定到 ListBox 或其他 ItemsControl 时使用了这种方法,例如this post -
我现在不能尝试,但如果我没记错的话它会抛出一个异常,说没有
TransferControl元素,因为它是在DataTemplate中定义的
标签: c# xaml windows-phone-8 data-binding