不確定這是否可能。我有一個可觀察的集合「OptionsList」,其中包含具有「Name」和「IsEnabled」屬性的簡單對象。從XAML中的明確枚舉綁定到父項的屬性
即使世界看起來像
Configuration
|--Option1
|--Option2
|--Option3
|--Enabled
第一子菜單的菜單「選項1,選項2,選項3」正確但隨後結合來自內部的我嘗試從第一子菜單中訪問這些項目,並結合其數據上下文,但我似乎無法通過RelativeSource訪問它們出於某種原因。
<MenuItem Header="Configuration">
<MenuItem Header="Service" ItemsSource="{Binding OptionsList}">
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Header" Value="{Binding Name}"/>
<Setter Property="ItemsSource">
<Setter.Value>
<x:Array Type="MenuItem">
<MenuItem Header="Enabled" IsCheckable="True"
DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type MenuItem}}, Path=DataContext}"
IsChecked="{Binding Path=IsEnabled}"/>
</x:Array>
</Setter.Value>
</Setter>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
</MenuItem>
我試過但仍然沒有成功。我更新了我的示例以反映您的更改。雖然 – bgura
@Thatoneguy看到我的編輯,問題是你顯式設置'DataContext'基於'RelativeSource'綁定 - ***失敗***(這種情況很奇怪,因爲通常如果'RelativeSource'綁定失敗, DataContext不會流下來,但是在這種情況下,它不會流下來)。 –
@解決問題可能不是綁定不起作用。更重要的是,它只能工作一次,即使在您提出的更正中。例如。如果有2個選項,你會看到他們兩個,你可以切換它們。但是,當你打開選項一個子菜單,然後打開選項二,然後回到選項一,啓用菜單不會顯示任何文本,並將不再工作... –