2009-09-02 3 views
1

У меня есть XAML MenuItem DataBound ItemsSource, который работает нормально, но есть небольшая проблема. Когда я просматриваю MenuItem, и нет элементов привязки данных, ParentMenu будет отключен, и он окажется прекрасным без ошибок привязки (как ожидается, ItemsSource пуст). Если ObservableCollection изменен и добавлен элемент, обновится привязка и появится MenuItem. Однако ItemContainerStyle не переопределяет свойство MenuItem.Tag значение базы данных.Strange XAML MenuItem DataBound ItemsSource Refresh Issue after empty ItemsSource

MenuItem прекрасно работает, пока ItemsSource никогда не запускается как пустой или никогда не уменьшается до пустого. Есть ли у кого-нибудь советы по такому вопросу? Я хотел бы иметь ItemsSource и ItemContainerStyle правильно обновить в любое время, даже когда ItemsSource начинается пустым

XAML показан ниже:

<MenuItem x:Name="MenuItem" Header="Menu" ItemsSource="{Binding Source={StaticResource MenuItemViewSource}}" ItemTemplate="{StaticResource MenuDataTemplate}"> 
    <MenuItem.ItemContainerStyle> 
     <Style TargetType="{x:Type MenuItem}"> 
      <Setter Property="Tag" Value="{Binding Path=ID, Source={StaticResource MenuItemViewSource}}"/> 
      <Setter Property="Background" Value="Red"/> 
      <Setter Property="Opacity" Value="0.5"/> 
      <EventSetter Event="Click" Handler="MenuItem_Click"/> 
     </Style> 
    </MenuItem.ItemContainerStyle> 
    <MenuItem.Style> 
     <Style TargetType="{x:Type MenuItem}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=Items.Count, RelativeSource={RelativeSource Self}}" Value="0"> 
        <Setter Property="IsEnabled" Value="False"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </MenuItem.Style> 
</MenuItem> 

ответ

0

только предположения, но вы пробовали привязку к идентификатору базовые данные без установки источника данных привязки в источник представления? Как это:

<Setter Property="Tag" Value="{Binding ID}"/> 

Обязывающее как и в стиле должны связываться с DataContext самого MenuItem, что деталь, что MenuItem представляет. Привязка назад к источнику просмотра, как вы делаете, может смутить его.

+0

Нужно ли устанавливать DataContext в MenuItem с набором ItemsSource? – Luke

+0

Нет, DataContext переходит к каждому элементу меню «child» из привязки ItemsSource в «родительском» элементе меню. –