C # WPF Stackpanel макет - PullRequest
       1

C # WPF Stackpanel макет

0 голосов
/ 07 апреля 2011

Я создал стековую панель в дереве. Я пытаюсь поместить мою фотографию рядом с моим флажком и текст рядом с моей картинкой, но я не знаю, как это сделать. В настоящее время это происходит:

http://img854.imageshack.us/i/naamloosl.png/

Это мой код:

ComboBoxItem tempComboItem = comboBox1.SelectedItem as ComboBoxItem;
        CheckBox cbox = new CheckBox();

        StackPanel panel = new StackPanel();
        panel.Width = 260;
        Label labelTitle = new Label();
        Label labelStatus = new Label();
        Image newImage = new Image();



        newImage.Source = new BitmapImage(new Uri(imageTextBox1.Text));
        newImage.Width = 85;
        newImage.Height = 65;

        panel.Children.Add(newImage);

        labelTitle.Content = itemTextBox1.Text;
        panel.Children.Add(labelTitle);



        labelStatus.Content = "Beschikbaar";
        panel.Children.Add(labelStatus);


        labelStatus.Foreground = Brushes.Lime;

        cbox.Content = panel;

        TreeViewItem newChild = new TreeViewItem();
        newChild.Header = cbox;

Может кто-нибудь мне помочь.

Я хочу, чтобы флажок, изображение и текст были горизонтальными. Я могу сделать с: panel.Orientation.

Но две текстовые метки справа, я хочу, чтобы они были вертикальными, одна под другой.

Как мне это сделать?

Ответы [ 3 ]

4 голосов
/ 07 апреля 2011

Я бы сделал следующий XAML: (Если вам нужна помощь, чтобы превратить это в код, дайте мне знать)

    <CheckBox>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Image Grid.RowSpan="2" 
                   Width="85"
                   Height="65" />
            <TextBlock Grid.Row="0"
                       Grid.Column="1"
                       Text="Title" />
            <TextBlock Grid.Row="1"
                       Grid.Column="1"
                       Text="beschikbaar" />
        </Grid>
    </CheckBox>
0 голосов
/ 07 апреля 2011
  <DockPanel>
    <CheckBox DockPanel.Dock="Left"/>

    <StackPanel DockPanel.Dock="Right">
      <TextBlock>My Text One</TextBlock>
      <TextBlock>beschikbaar</TextBlock>
    </StackPanel>

    <Image DockPanel.Dock="Left" Source="myImage.png" />
  </DockPanel>

Это простой способ достижения эффекта.Отсюда вы можете легко настроить вертикальные выравнивания по своему вкусу.Вы также можете легко сделать это в коде, но я бы порекомендовал придерживаться XAML для задач, основанных на макете.

0 голосов
/ 07 апреля 2011

Вы просто подразумеваете, что хотите Horizontal ориентацию?

Если это так, попробуйте следующее:

panel.Orientation = Orientation.Horizontal;

Хотя, боюсь, вам на самом деле может потребоваться больше вмешательства, чем просто установка этого свойства; давайте посмотрим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...