Привязка WPF к ElementName внутри ItemsControl

У меня есть флажок, и ItemsControl заполняет несколько DataGrids следующим образом:

<Checkbox Content="Birthday Column Visible" x:Name="UI_BirthdayVisibleCB" />

<ItemsControl  ItemsSource="{Binding Path=ParentsCollection}">
   <ItemsControl.ItemTemplate>
      <DataTemplate>
         <DataGrid  AutoGenerateColumns="False" ItemsSource="{Binding Children}">
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="Birthday" Width="120" Visibility="{Binding IsChecked, ElementName=UI_BirthdayVisibleCB, Converter={StaticResource BoolToVis}}" >
...
               </DataGridTemplateColumn>
            </DataGrid.Columns>
         </DataGrid>
</Rest of closing tags>

Это создает ошибки вывода привязки, поскольку он пытается найти IsChecked в DataGridTemplateColumn. Если я пытаюсь найти Относительного предка, я получаю исключение:

Binding.RelativeSource cannot be set while using Binding.ElementName.

У меня есть ViewModel, и я в основном придерживаюсь MVVM, но в этом случае я бы очень хотел сохранить видимость столбцов на уровне просмотра. Обратите внимание, что BoolToVis просто преобразует Boolean в Visibility.

Edit

Вот пример того, что я пытаюсь сделать:

 <DataGridTemplateColumn Header="Birthday" Visibility="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:MyView} }, Path=IsChecked, ElementName=UI_BirthdayVisibleCB, Converter={StaticResource BoolToVis}}" />

Он компилируется, но не запускается, однако вызывает исключение, указанное выше.

9
задан bufferz 21 September 2010 в 15:10
поделиться