Я динамически заменяю ярлык на выпадающий список и флажок в ячейке сетки, подобной этой
Private Sub replaceUiElementInGrid(ByVal newUiElement As UIElement, ByVal uiElementToReplace As UIElement, ByVal gridToAddNewUiElement As Grid)
If gridToAddNewUiElement.Children.Contains(uiElementToReplace) Then
Grid.SetRow(newUiElement, Grid.GetRow(uiElementToReplace))
Grid.SetColumn(newUiElement, Grid.GetColumn(uiElementToReplace))
Dim pos As Integer = gridToAddNewUiElement.Children.IndexOf(uiElementToReplace)
gridToAddNewUiElement.Children.RemoveAt(pos)
gridToAddNewUiElement.Children.Add(newUiElement)
Try
Dim label As Label = DirectCast(uiElementToReplace, Label)
If (label.Name.Contains("ACTIVITY")) Then
Dim checkbox As CheckBox
checkbox = New CheckBox()
checkbox.Content = "Direction"
checkbox.HorizontalAlignment = Windows.HorizontalAlignment.Right
'Dim uiCheckbox As UIElement = DirectCast(checkbox, UIElement)
Grid.SetRow(checkbox, Grid.GetRow(uiElementToReplace))
Grid.SetColumn(checkbox, Grid.GetColumn(uiElementToReplace))
gridToAddNewUiElement.Children.Add(checkbox)
AddHandler checkbox.Click, AddressOf filtrerDropDownActiviteEvent
End If
Catch ex As Exception
End Try
End If
End Sub
Проблема в том, что флажок находится над раскрывающимся списком.Я попытался checkbox.HorizontalAlignment = Windows.HorizontalAlignment.Right
, но раскрывающийся список всегда занимает всю ширину ячейки.
Все, что мне нужно, это раскрывающийся список слева и флажок справа, но я не могу понять, как это сделать
Спасибо
Вот финальная версия
Private Sub replaceUiElementInGrid(ByVal newUiElement As UIElement, ByVal uiElementToReplace As UIElement, ByVal gridToAddNewUiElement As Grid)
If gridToAddNewUiElement.Children.Contains(uiElementToReplace) Then
Dim panel As WrapPanel = New WrapPanel
Grid.SetRow(panel, Grid.GetRow(uiElementToReplace))
Grid.SetColumn(panel, Grid.GetColumn(uiElementToReplace))
Dim pos As Integer = gridToAddNewUiElement.Children.IndexOf(uiElementToReplace)
gridToAddNewUiElement.Children.RemoveAt(pos)
panel.Children.Add(newUiElement)
Try
Dim label As Label = DirectCast(uiElementToReplace, Label)
If (label.Name.Contains("ACTIVITY")) Then
Dim checkbox As CheckBox
checkbox = New CheckBox()
checkbox.Content = "Direction"
'checkbox.HorizontalAlignment = Windows.HorizontalAlignment.Right
'Dim uiCheckbox As UIElement = DirectCast(checkbox, UIElement)
panel.Children.Add(checkbox)
AddHandler checkbox.Click, AddressOf filtrerDropDownActiviteEvent
End If
Catch ex As Exception
End Try
gridToAddNewUiElement.Children.Add(panel)
End If
End Sub