以下示例中的标签(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) 我正在为Flow布局面板添加一些控件.在某些控件之间我需要一个换行符.我怎么能实现这个目标.谢谢
为什么没有文本框伸展来填充堆叠面板中的空间?这是设计的吗?在网格中,文本框按预期延伸.
我需要处理多个面板,包含各种数据掩码.使用TreeView控件可以看到每个面板.
此时,我手动处理面板可见性,方法是将所选面板可见并将其置于顶部.
实际上这并不是很容易,特别是在UI设计师中,因为当我添加一个全新的面板时,我必须调整每个面板的大小,然后设计它......
一个好的解决方案是使用TabControl,每个面板都包含在TabPage中.但是我找不到任何隐藏TabControl按钮的方法,因为我已经有了一个用于选择项目的TreeView.
另一种解决方案是ipotethic"StackPanelControl",其中Panel使用堆栈排列,但我无法在任何地方找到它.
处理这种UI的最佳解决方案是什么?
在下面的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) 我如何定义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其他地方定义吗?
我有一个看起来像这样的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吗?
是否可以在<StackPanel>其父控件(例如Window)上水平放置一个或标签(或按钮,等等),并填写所有允许的空间?
例如,如果我有3个控件
_ window width_ _
[1] _ _ [2] _ _ [3]
或2个控件
_ window width_ _
[1] _ __ _ __ _ [2]
在每种情况下,利用窗口的整个宽度,每个边缘控制分别左右对齐.
我有一个stackpanel,当我在应用程序中选中时,它会一直保持焦点.
使用snoop我可以看到stackpanel有一个ContentControl,它有一个ContentPresenter.ContentControl得到了关注.我怎么能禁用它?为什么这是默认行为?
好的,我放弃了:我需要在下面更改为这个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) stackpanel ×10
wpf ×6
xaml ×4
c# ×2
winforms ×2
.net ×1
autosize ×1
datatrigger ×1
layout ×1
panel ×1
silverlight ×1
tabcontrol ×1
tabstop ×1
triggers ×1
vb.net ×1
visibility ×1
wpf-controls ×1
wrappanel ×1