Я смотрел на ответ о том, как установить видимость столбца сетки данных , поэтому я добавил
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="b2v" />
</UserControl.Resources>
, а затем в моем xaml у меня есть
<DataGridTemplateColumn Visibility="{Binding Source={x:Reference ShowLookupCheckbox},
Path=IsChecked
Converter={StaticResource b2v}}" >
...
</DataGridTemplateColumn>
Когда мое приложение запускается и флажок снят, столбец правильно свернут.Когда я проверяю флажок, столбец правильно показывает.Когда я нажимаю на флажок снова, столбец снова правильно свернут. Однако , когда я нажимаю, чтобы включить флажок во второй раз, я получаю InvalidOperationException
"Указанный элемент уже является логическим дочерним элементом другого элемента. Сначала отключите его."
Я пытался сменить режим на один, но это не помогло.Кто-нибудь знает, что я делаю неправильно или как интерпретировать это исключение?
Я не думаю, что содержание столбца имеет значение, так как оно работает правильно без параметра «Видимость», но для завершения приведу полный xaml, с которым я согласился ... выше
<DataGridTemplateColumn.Header>
<TextBlock Style="{StaticResource DataGridHeader}">MO Lookup</TextBlock>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate >
<DataTemplate >
<Hots:AutoCompleteBoxEx ToolTip="Start typing a Master Order Id"
ItemsSource="{Binding AllMoLines,
UpdateSourceTrigger=PropertyChanged}"
Width="50"
HorizontalContentAlignment="Left"
FilterMode="StartsWith"
IsDropDownOpen="True"
IsTextCompletionEnabled="True"
LostFocus="MoLineBoxLostFocus"
SelectedItem="{Binding Path=SelectedMoLine, Mode=TwoWay}" >
<Hots:AutoCompleteBoxEx.ItemTemplate>
<DataTemplate>
<Grid Width="500">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50" />
<ColumnDefinition Width="400" />
<ColumnDefinition Width="50" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding HssId, Mode=OneWay}"
Grid.Column="0" />
<TextBlock Text="{Binding Description, Mode=OneWay}"
Grid.Column="1" />
<TextBlock Text="{Binding Unit, Mode=OneWay}"
Grid.Column="2" />
</Grid>
</DataTemplate>
</Hots:AutoCompleteBoxEx.ItemTemplate>
</Hots:AutoCompleteBoxEx>
</DataTemplate>
[EDIT] Вот несколько первых строк из трассировки стека исключений.Всего 66 строк.Это AddLogicalChild и ChangeLogicalParent, что я нахожу сбивающим с толку.Я не уверен, почему установка / снятие флажка, связанного со свойством Visibility, приводит к добавлению дочернего элемента
System.InvalidOperationException was unhandled
Message=Specified element is already the logical child of another element. Disconnect it first.
Source=PresentationFramework
StackTrace:
at System.Windows.FrameworkElement.ChangeLogicalParent(DependencyObject newParent)
at System.Windows.FrameworkElement.AddLogicalChild(Object child)
at System.Windows.Controls.ContentControl.OnContentChanged(Object oldContent, Object newContent)