我只想在左边流动文本,在右边有一个帮助框.
帮助框应该一直延伸到底部.
如果您取出下面的外部StackPanel,它的效果很好.
但由于布局的原因(我正在动态插入UserControl),我需要包装StackPanel.
如何让GroupBox扩展到StackPanel的底部,你可以看到我已经尝试过:
XAML:
<Window x:Class="TestDynamic033.Test3"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Test3" Height="300" Width="600">
<StackPanel
VerticalAlignment="Stretch"
Height="Auto">
<DockPanel
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Height="Auto"
Margin="10">
<GroupBox
DockPanel.Dock="Right"
Header="Help"
Width="100"
Background="Beige"
VerticalAlignment="Stretch"
VerticalContentAlignment="Stretch"
Height="Auto">
<TextBlock Text="This is the help that is available on the news screen." TextWrapping="Wrap" />
</GroupBox>
<StackPanel DockPanel.Dock="Left" Margin="10" Width="Auto" HorizontalAlignment="Stretch">
<TextBlock Text="Here is the news that should wrap around." TextWrapping="Wrap"/>
</StackPanel>
</DockPanel>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
谢谢Mark,使用DockPanel而不是StackPanel清理它.一般来说,我发现自己现在越来越多地使用DockPanel进行WPF布局,这里是固定的XAML:
<Window x:Class="TestDynamic033.Test3"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Test3" Height="300" Width="600" MinWidth="500" …Run Code Online (Sandbox Code Playgroud) 我将一个DockPanel添加到RadioButton元素,这样我就可以使用100%的宽度水平分配单选按钮标签,文本框和按钮.
LastChildFill="True"在DockPanel中使用会拉伸最后一个元素.如果文本框是面板中的最后一个子项,这很好用.但是,由于按钮是最后一个元素并且具有固定宽度,因此应该拉伸文本框.但是,没有像这样的财产2ndChildFill="True".
我的代码看起来像这样:
<RadioButton HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch">
<DockPanel >
<TextBlock VerticalAlignment="Center">in location:</TextBlock>
<TextBox Grid.Column="1" Margin="10,0,0,0">Path string</TextBox>
<Button HorizontalAlignment="Right"
Margin="10,0,0,0" Padding="3,0">...</Button>
</DockPanel>
</RadioButton>
Run Code Online (Sandbox Code Playgroud)
它给了我这个:

任何想法,提示解决这个问题?提前谢谢了...
如何以编程方式创建基于UserControl的元素并将其停靠到DockPanel?
在一个窗口中,我有一个DockPanels 列表来指定几个文件.每个DockPanel都有一个TextBox(用于路径)和一个按钮(用于浏览文件).
我重新创建了一个简单的WPF页面来解决这里的问题:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="150"
Height="22">
<DockPanel>
<TextBox HorizontalAlignment="Stretch"/> <!-- path to file -->
<Button Content="..." DockPanel.Dock="Right"/> <!-- button to browse for file -->
</DockPanel>
</Page>
Run Code Online (Sandbox Code Playgroud)
问题是我希望按钮位于文本框的右侧,但这会导致文本框非常小,因为DockPanel的LastChild是用完剩余空间的按钮.香港专业教育学院试图改变它,通过改变他们周围和设置,LastChildFill="False"但这只会导致按钮再次变小,而不是使文本框宽(甚至与HorizontalAlignment="Stretch").
我想按顺序控制的原因是我希望用户在使用tab窗口导航时到达Button之前的TextBox .我调查了设置,TabIndex但感觉很讨厌,WPF最喜欢的功能是tabindex的顺序是在XAML中定义的conrols.更不用说我可能不得不在Window中的所有内容上手动设置TabIndex.
对我来说,似乎不遵守TextBox.HorizontalAlignment的设置.如何让第一个控件尽可能多地使用空间但仍保留Tab键顺序?
我正在尝试购物车的内容ItemsControl(ListBox).为此,我创建了以下内容DataTemplate:
<DataTemplate x:Key="Templates.ShoppingCartProduct"
DataType="{x:Type viewModel:ProductViewModel}">
<DockPanel HorizontalAlignment="Stretch">
<TextBlock DockPanel.Dock="Left"
Text="{Binding Path=Name}"
FontSize="10"
Foreground="Black" />
<TextBlock DockPanel.Dock="Right"
Text="{Binding Path=Price, StringFormat=\{0:C\}}"
FontSize="10"
Foreground="Black" />
</DockPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
然而,当物品显示在我的购物车中时,名称和价格TextBlocks正好位于彼此旁边,并且右侧有非常大量的空白.
想知道什么是强迫DockPanel伸展以填充所有可用空间的最佳方法ListItem?
我在ItemsControl的DataTemplate中设置了DockPanel,如下所示:
<ItemsControl HorizontalContentAlignment="Stretch">
<ItemsControl.ItemTemplate>
<DataTemplate>
<DockPanel>
<ComboBox DockPanel.Dock="Left"/>
<ComboBox DockPanel.Dock="Left"/>
<Button DockPanel.Dock="Right">Button</Button>
<!-- This will appear before the button...it has to go after it in the XAML so it will fill properly in the DockPanel -->
<TextBox DockPanel.Dock="Left" MinWidth="100" HorizontalAlignment="Stretch"/>
</DockPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
我希望文本框填充组合框和按钮之间的所有剩余空间.我不得不把文本框放在XAML的最后,因为DockPanel只会填充最后一个孩子.看起来不错; 但是,标签顺序现在搞砸了.它现在选中了combobox-combobox-button-textbox而不是combobox-combobox-textbox-button.
我尝试KeyboardNavigation.TabIndex在每个项目上使用属性,但由于这是ItemsControl的DataTemplate(每个dockpanels将用于单独的项目),这使得Tab键顺序垂直向下跳转到每个项目的组合框,然后垂直向下移动每个文本框,然后垂直向下按下每个按钮,而不是跨越每一行的所需行为,然后向下.
示例UI:
[Combo11] [Combo12] [Text1] [Button1]
[Combo21] [Combo22] [Text2] [Button2]
Run Code Online (Sandbox Code Playgroud)
在目前的情况下,它会发生Combo11,Combo12,Button1,Text1,Combo21,Combo22,Button2,Text2.如果我添加TabOrder属性,它会去Combo11,Combo21,Combo12,Combo22,Text1,Text2,Button1,Button2.
我想要它去Combo11,Combo12,Text1,Button1,Combo21,Combo22,Text2,Button2.
有没有人对如何解决这个UI问题有任何想法?
以下代码将两个文本元素放在顶部,即使第二个文本元素标记为"Bottom".背景颜色一直到底部,所以DockPanel似乎伸展到底部.
我对DockPanel的理解是什么?
<Window x:Class="TestIndexer934.Views.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:TestIndexer934.Commands"
Title="Main Window" Height="400" Width="800">
<DockPanel HorizontalAlignment="Left" Background="Beige">
<TextBlock DockPanel.Dock="Top" Text="Testing top"/>
<TextBlock DockPanel.Dock="Bottom" Text="Testing bottom"/>
</DockPanel>
</Window>
Run Code Online (Sandbox Code Playgroud) 我安装了Windows 7.
然后,我从此处使用Web Platform Installer安装了Web Developer 2010 Express .
然后我从这里安装了Silverlight 4 Toolkit 的4月15日版本.
然后我添加了这个参考:
替代文字http://www.deviantsart.com/upload/ijk0lm.png
然后在我的XAML中,我像这样引用它,但它没有给我智能感知并且告诉我我缺少一个程序集引用:
替代文字http://www.deviantsart.com/upload/cd4vrj.png
更新:
xmlns:tk="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
Run Code Online (Sandbox Code Playgroud)
即使在重建之后也不起作用
在Web Developer 2010 Express中使用Silverlight 4 Toolkit需要做什么?
所以我在另一台计算机上用Web Developer Express 2008中的Silverlight 3再次测试它,它确实按照我记忆的方式工作,所以为什么它不能在Silverlight 4中以这种方式工作,我需要更改才能获得它上班?:
wrappanel visual-studio-2010 silverlight-toolkit dockpanel silverlight-4.0
我有一个StackPanel包含StackPanel和其他一些物品.第一个StackPanel具有垂直方向,内部具有水平方向.内部有a TreeView和a ListView,我希望它们扩展并适合窗口的宽度,我在窗口设置并允许用户更改.我也希望外部StackPanel适合窗户的高度.我该怎么做呢?
编辑:
我已经转换为使用a DockPanel,并且我已经DockPanel.Dock在每个元素中正确设置了属性,并且LastChildFill在两个dockpanel中都禁用了,布局仍然没有拉伸.
代码:
<Window x:Class="Clippy.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="400" Width="600" MinHeight="400" MinWidth="600" Loaded="Window_Loaded" SizeChanged="Window_SizeChanged">
<DockPanel Name="wrapperDockPanel" LastChildFill="False">
<Menu Height="22" Name="mainMenu" Width="Auto" DockPanel.Dock="Top" />
<ToolBar Height="26" Name="mainToolBar" Width="Auto" DockPanel.Dock="Top" />
<DockPanel Height="Auto" Name="contentDockPanel" DockPanel.Dock="Top" LastChildFill="False">
<TreeView Name="categoryTreeView" />
<ListView Name="clipListView" />
</DockPanel>
<StatusBar Height="23" Name="mainStatusBar" DockPanel.Dock="Top" />
</DockPanel>
</Window>
Run Code Online (Sandbox Code Playgroud) 我想构建一个用户界面,由于历史原因,它有很多"列"信息.其中许多在所有情况下都与所有用户无关,所以我想我会看到停靠面板,以允许用户根据他们的工作场景隐藏或重新排列列.
这是.NET 3.5中的Winforms.
因此,我想要以下内容:
示例样机http://images.vkarlsen.no/so/2902953/dock-test.png
到目前为止,我已经尝试了以下组件包,没有运气:
Telerik的
允许我停靠在标签页内,但停靠面板无法从一个标签页移动到另一个标签页.当尝试将浮动面板拖放到与其来源不同的选项卡页面上时,它会显示停靠栏将成功,但是当它被丢弃时,它将停靠在其所有者容器上.
Divelements SandDoc
与Telerik相同的问题.
DevExpress XtraBars
与Telerik相同的问题.
http://sourceforge.net/projects/dockpanelsuite/
同样的问题,停靠站内容窗口只能属于一个停靠面板,这意味着它无法从一个选项卡迁移到另一个选项卡.
基本上,有没有人知道任何这样的组件(包)可以让我做我想要的?
编辑:好的,我试过让Sourceforge控件在上面工作,但我看不出如何使这个工作.
基本上,这就是我需要做的事情:
如果我理解下面的答案提到这个控件,我应该使用DockPanel而不是TabControl,而DockPane而不是TabPage,但据我所知,这只能让我能够停靠和取消选项卡页面,而这不是我想要的是.
无论如何,这是一个程序文件,只需创建一个Winforms项目,从sourceforge项目添加对.dll的引用,并在Program.cs中粘贴此代码:
using System;
using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;
namespace DockTest
{
public class DockWindow1 : DockContent
{
public DockWindow1()
{
TabText = "Dock-window #1";
DockPanel panel = new DockPanel();
panel.Dock = DockStyle.Fill;
Controls.Add(panel);
// tried this related to the exceptions
// this.DockPanel = panel;
}
}
public class DockWindow2 : DockContent
{
public DockWindow2() …Run Code Online (Sandbox Code Playgroud) dockpanel ×10
wpf ×8
xaml ×4
.net ×2
c# ×2
autolayout ×1
autoresize ×1
autosize ×1
components ×1
stackpanel ×1
tabindex ×1
tabpage ×1
tabpanel ×1
textbox ×1
ui-design ×1
wrappanel ×1