C#WPF堆叠面板布局

C#WPF堆叠面板布局,c#,wpf,xaml,C#,Wpf,Xaml,我已经在TreeView项目中创建了stackpanel。我试图让我的图片旁边的复选框和文本旁边的图片框,但我不知道如何做到这一点。目前这种情况正在发生: 这是我的代码: ComboBoxItem tempComboItem = comboBox1.SelectedItem as ComboBoxItem; CheckBox cbox = new CheckBox(); StackPanel panel = new StackPanel();

我已经在TreeView项目中创建了stackpanel。我试图让我的图片旁边的复选框和文本旁边的图片框,但我不知道如何做到这一点。目前这种情况正在发生:

这是我的代码:

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 = Orientation.Horizontal;

尽管如此,我担心您实际上可能需要更多的干预,而不仅仅是设置此属性;让我看看。

你是说你想要水平方向吗

如果是,请尝试以下操作:

panel.Orientation = Orientation.Horizontal;

尽管如此,我担心您实际上可能需要更多的干预,而不仅仅是设置此属性;让我们看看。

我将制作以下XAML:(如果您需要帮助将其转换为代码,请告诉我)


我将制作以下XAML:(如果您需要帮助将其转换为代码,请告诉我)



我的文本一
贝希克巴
这是一种实现效果的简单方法。从这里,您可以轻松地根据自己的喜好调整垂直对齐。您也可以在代码中轻松实现这一点,但我建议您在基于布局的任务中使用XAML。


我的文本一
贝希克巴

这是一种实现效果的简单方法。从这里,您可以轻松地根据自己的喜好调整垂直对齐。您也可以在代码中轻松做到这一点,但我建议您在基于布局的任务中坚持使用XAML。

不,并非所有内容都需要是水平的,两个文本标签必须是水平的vertical@anonyg:好的,那么你需要在你的
堆栈面板
中有更多的元素来适应这一点,例如
网格
;并以这种方式更精细地布局元素。不,并非所有元素都需要水平,2个文本标签必须是水平的vertical@anonyg:好的,那么你需要在你的
堆栈面板
中有更多的元素来适应这一点,例如
网格
;并以这种方式更精细地布置元素。你为什么要这样做?使用
ItemTemplate
不是更容易吗?的确如此。使用将我的答案中的xaml放入DataTemplate并将其分配给Treeview的ItemTemplate属性(不要忘记使用
{Binding}
而不是硬编码值)为什么这样做?使用
ItemTemplate
不是更容易吗?的确如此。使用将我的答案中的xaml放入DataTemplate并将其分配给Treeview的ItemTemplate属性(不要忘记使用
{Binding}
而不是硬编码值)+1布局属于xaml。这毕竟是WPF,而不是winforms。+1布局属于xaml。这毕竟是WPF,而不是winforms。
  <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>