标签: stackpanel

在具有水平方向的StackPanel中,WrapPanel不会换行

以下示例中的标签(WPF/XAML)只是在屏幕上游行,不会发生包装.删除方向有效,但不提供所需的功能/外观.任何想法如何使WrapPanel包装到当前的大小StackPanel

<Window Height="300" Width="600">
    <StackPanel Orientation="Horizontal">
        <WrapPanel>
            <Label Height="28" Name="label1" Width="120">First Name</Label>
            <Label Height="28" Name="label2" Width="120">John</Label>
            <Label Height="28" Name="label3" Width="120">Last Name</Label>
            <Label Height="28" Name="label4" Width="120">Smith</Label>
            <!-- ...more labels!... -->
        </WrapPanel>
        <!-- ...other controls/panels... -->
    </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

wpf xaml wrappanel wpf-controls stackpanel

14
推荐指数
2
解决办法
2万
查看次数

C#Flow Layout面板换行符或换行符

我正在为Flow布局面板添加一些控件.在某些控件之间我需要一个换行符.我怎么能实现这个目标.谢谢

c# vb.net panel stackpanel winforms

14
推荐指数
3
解决办法
1万
查看次数

WPF - 在StackPanel中将Horizo​​ntalAlignment = Stretch设置为Textbox

为什么没有文本框伸展来填充堆叠面板中的空间?这是设计的吗?在网格中,文本框按预期延伸.

wpf autosize stackpanel

13
推荐指数
2
解决办法
2万
查看次数

隐藏TabControl按钮以管理堆叠的Panel控件

我需要处理多个面板,包含各种数据掩码.使用TreeView控件可以看到每个面板.

此时,我手动处理面板可见性,方法是将所选面板可见并将其置于顶部.

实际上这并不是很容易,特别是在UI设计师中,因为当我添加一个全新的面板时,我必须调整每个面板的大小,然后设计它......

一个好的解决方案是使用TabControl,每个面板都包含在TabPage中.但是我找不到任何隐藏TabControl按钮的方法,因为我已经有了一个用于选择项目的TreeView.

另一种解决方案是ipotethic"StackPanelControl",其中Panel使用堆栈排列,但我无法在任何地方找到它.

处理这种UI的最佳解决方案是什么?

c# tabcontrol stackpanel winforms

13
推荐指数
1
解决办法
5627
查看次数

如何在StackPanel内垂直对齐TextBox?

在下面的XAML中,单词"Test" 水平居中但不垂直居中.

如何让它垂直居中?

<Window x:Class="TestVerticalAlign2343.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        WindowStartupLocation="CenterScreen"
    Title="Window1" Height="768" Width="1024">
    <DockPanel LastChildFill="True">
        <Slider x:Name="TheSlider"
                DockPanel.Dock="Left"
                Orientation="Vertical"
                HorizontalAlignment="Center"
                HorizontalContentAlignment="Center"
                Minimum="0"
                Maximum="10"
                Cursor="Hand"
                Value="{Binding CurrentSliderValue}"
                IsDirectionReversed="True"
                IsSnapToTickEnabled="True"
                Margin="10 10 0 10"/>
        <Border DockPanel.Dock="Right" Background="Beige"
                Padding="10"
                Margin="10"
                CornerRadius="5">
            <StackPanel Height="700">
                <TextBlock
                    Text="Test"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center"
                    FontSize="200" x:Name="TheNumber"/>

            </StackPanel>
        </Border>
    </DockPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

xaml stackpanel

12
推荐指数
3
解决办法
3万
查看次数

为StackPanel定义DataTrigger

我如何定义DataTrigger一个StackPanel?它有一个Trigger属性,但是在这里定义一个触发器在启动应用程序时在Initialize上给出以下错误:

对象初始化失败(ISupportInitialize.EndInit).触发器集合成员必须是EventTrigger类型.....

这由以下简单给出DataTrigger:

<StackPanel x:Name="PersonPanel" DataContext="{Binding CurrentPerson}">
    <TextBlock Text="{Binding Id}" />
    <TextBlock Text="{Binding Name}" />
    <StackPanel.Triggers>
        <DataTrigger Binding="{Binding Id}" Value="1">
            <Setter TargetName="PersonPanel" Property="StackPanel.Background" Value="Green" />
        </DataTrigger>                
    </StackPanel.Triggers>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

这是我的第Trigger一次,所以我做错了什么?我应该在Trigger其他地方定义吗?

.net wpf triggers datatrigger stackpanel

12
推荐指数
2
解决办法
1万
查看次数

更改StackPanel中的可见性

我有一个看起来像这样的WPF StackPanel :(删除了一些无关紧要的属性)

<StackPanel HorizontalAlignment="Center" Name="PICStack">
        <Label Name="PICName"  MouseDoubleClick="PICName_MouseDoubleClick" />
        <TextBox Name="PICData" Width="120" Visibility="Hidden" />
        <Label Name="PICWeight" />
        <Label Name="PICARM"    />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

请注意,TextBox以"隐藏"开头.

当我双击顶部标签时,我交换了可见性:

private void PICName_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    this.PICData.Visibility = Visibility.Visible;
    this.PICName.Visibility = Visibility.Hidden;
}
Run Code Online (Sandbox Code Playgroud)

目的是隐藏标签,并使TextBox显示在其位置.

但是,因为它是StackPanel,所以TextBox占用垂直空间,即使它不可见.然后,当文本框显示时,它上面有空白区域,标签以前是可见的.

有没有一种好方法可以让这两个项目基本上直接相互叠加?那么双击Label会突然变成TextBox吗?

wpf visibility stackpanel

12
推荐指数
2
解决办法
2万
查看次数

水平Stackpanel填充父控制

是否可以在<StackPanel>其父控件(例如Window)上水平放置一个或标签(或按钮,等等),并填写所有允许的空间?

例如,如果我有3个控件

_ window width_ _

[1] _ _ [2] _ _ [3]

或2个控件

_ window width_ _

[1] _ __ _ __ _ [2]

在每种情况下,利用窗口的整个宽度,每个边缘控制分别左右对齐.

wpf layout xaml stackpanel

12
推荐指数
1
解决办法
3万
查看次数

如何禁用stackpanel上的制表位

我有一个stackpanel,当我在应用程序中选中时,它会一直保持焦点.

使用snoop我可以看到stackpanel有一个ContentControl,它有一个ContentPresenter.ContentControl得到了关注.我怎么能禁用它?为什么这是默认行为?

wpf tabstop stackpanel

12
推荐指数
2
解决办法
1万
查看次数

为什么StackPanel不会在Silverlight中左侧放置文本块而在右侧放置按钮?

好的,我放弃了:我需要在下面更改为这个StackPanel,以便它放置:

  • 表格最左侧的文字
  • 形式最右侧的按钮.

alt text http://tanguay.info/web/external/stackPanelLeftRight.png

<UserControl x:Class="TestData333.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
        <Border CornerRadius="10" Background="Yellow" Padding="20">
            <StackPanel VerticalAlignment="Top" HorizontalAlignment="Left">
                <ScrollViewer Background="Beige" 
                              Height="230"
                              Width="360">
                    <StackPanel>
                        <TextBlock x:Name="TheContent" 
                           Foreground="Navy"
                           FontSize="14"
                           TextWrapping="Wrap"/>
                    </StackPanel>
                </ScrollViewer>

                <StackPanel Orientation="Horizontal">
                    <TextBlock x:Name="ProgressIndicator" Text="Ready..."
                               HorizontalAlignment="Left"/>
                    <Button Content="Load Data"
                        Width="100"
                        HorizontalAlignment="Right"
                        Click="Button_Load"
                        Margin="0 5 0 0"/>
                </StackPanel>

            </StackPanel>
        </Border>
    </Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

回答:

下载了Silverlight 3工具包,它安装了DockPanel,引用了System.Windows.Controls,然后是XAML:

<UserControl x:Class="TestData333.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
        <Border CornerRadius="10" Background="Yellow" Padding="20">
            <StackPanel VerticalAlignment="Top" HorizontalAlignment="Left"> …
Run Code Online (Sandbox Code Playgroud)

silverlight xaml stackpanel

11
推荐指数
2
解决办法
1万
查看次数