2015-11-02 7 views
0

Я пытаюсь связать заголовок DataGrid колонки к своему собственному ContextMenu, как это:Связывание ContextMenu с DataGrid Столбцы

<DataGrid x:Name="AllLogs"> 
    <DataGrid.ContextMenu> 
     <ContextMenu> 
       <MenuItem Header="Show/Hide Columns" 
         ItemsSource="{Binding ElementName=AllLogs, Path=Columns}"> 
        <MenuItem.ItemTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding Header}"></TextBlock> 
         </DataTemplate> 
        </MenuItem.ItemTemplate> 
       </MenuItem> 
      </ContextMenu> 
     </DataGrid.ContextMenu> 
    </DataGrid> 

Его всегда посылает следующее сообщение об ошибке на выходе:

Не удается найти источник для связывания со ссылкой 'ElementName = AllLogs'. BindingExpression: Path = Столбцы; DataItem = null; целевым элементом является «MenuItem» (Name = ''); предназначаться свойство является 'ItemsSource' (тип 'IEnumerable')


EDIT: Связывание с ComboBox работ, как ожидается,

<ComboBox ItemsSource="{Binding ElementName=AllLogs, Path=Columns}"> 
     <ComboBox.ItemTemplate> 
       <DataTemplate> 
        <CheckBox Content="{Binding Header}"/> 
       </DataTemplate> 
     </ComboBox.ItemTemplate> 
</ComboBox> 

ответ

0

Я не знаю, контроль за RadGrivView скажем , но ошибка означает, что он не может найти свойство IEnumerable, называемое «Столбцы» для вашего элемента. Вы уверены, что это общедоступная коллекция для контроля?

+0

RadGridView - это элемент управления от telerik, который является производным от DataGrid. и да, у него есть общедоступный геттер и частный сеттер! – Marshal

0

Вы должны установить сначала DataContext из ContextMenu, чтобы ItemSource связывался с пунктом меню, чтобы наследовать тот же DataContext.

<ContextMenu DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}"> 
<MenuItem Header="Show/Hide Columns" 
    ItemsSource="{Binding Columns}"> 
    <MenuItem.ItemTemplate> 
     <DataTemplate> 
       <TextBlock Text="{Binding Header}"></TextBlock> 
     </DataTemplate> 
    </MenuItem.ItemTemplate> 
</MenuItem> 
</ContextMenu> 
+0

Вы пробовали это перед публикацией? Нет смысла связывать datacontext, я не получаю никаких свойств из datacontext. – Marshal

Смежные вопросы