mam wyboru i ItemsControl wypełniania kilku datagrids następujący sposób:WPF Binding do ElementName wewnątrz ItemsControl
<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>
To tworzy wiązanie błędów wyjściowych, jak próbuje znaleźć IsChecked na DataGridTemplateColumn. Gdy próbuję szukać względnej Przodek Otrzymuję wyjątek:
Binding.RelativeSource cannot be set while using Binding.ElementName.
Mam ViewModel, i trzymać się MVVM głównie, ale w tym przypadku naprawdę chciałbym, aby zachować ustawienia widoczności kolumn na warstwie View . Zauważ, że BoolToVis
konwertuje tylko wartość Boolean na widoczność.
Edit
Oto przykład tego, co próbuję zrobić:
<DataGridTemplateColumn Header="Birthday" Visibility="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:MyView} }, Path=IsChecked, ElementName=UI_BirthdayVisibleCB, Converter={StaticResource BoolToVis}}" />
To kompiluje ale nie działa jednak zgłasza wyjątek powyżej.
Problem polega na tym, że potrzebuję zarówno nazwy elementu, jak i źródła relatywnego, ponieważ mój DataContext jest ustawiony na bieżący element ItemsControl. – bufferz
Wyślij kod, który używa zarówno elementu ElementName, jak i RelativeSource. – McStretch
OK - zredagowałem moje pytanie, aby pokazać, co próbuję zrobić. – bufferz