2 элемента в ячейке сетки - PullRequest
0 голосов
/ 07 марта 2012

Я динамически заменяю ярлык на выпадающий список и флажок в ячейке сетки, подобной этой

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

1 Ответ

0 голосов
/ 07 марта 2012

Оберните сетку или другой тип панели вокруг выпадающего списка и флажка. Отформатируйте его, а затем замените метку сеткой (или любой другой).

Edit:

Просто чтобы быть более конкретным, теперь вы в конечном итоге с этим:

<Grid>
    <ComboBox />
    <CheckBox />
</Grid>

Но стоит пойти примерно так:

 <Grid>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width=".50" />
                <ColumnDefinition Width=".50" />
            </Grid.ColumnDefinitions>
            <ComboBox Grid.Column="0"  />
            <CheckBox Grid.Column="1"  />
        </Grid>
 </Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...