有没有办法在不改变StackPanel中这些控件的实际顺序的情况下更改StackPanel中控件的绘制顺序?
我问的原因是我们在按钮之间有一个边距为0的按钮栏.活动按钮与相邻按钮重叠(即边距设置为-10).这里的问题是稍后绘制右按钮,因此在顶部而不是活动按钮上绘制.
我担心我需要制作一个基于网格的自定义控件.
我有一个带复选框的stackpanel.我似乎无法在带有margin属性的复选框之间使用相同的间距
有人可以告诉我,我做错了什么?
下面的代码给了我这个:
http://www.shrani.si/f/1Y/M6/4eniAdAw/margin.png http://www.shrani.si/f/1Y/M6/4eniAdAw/margin.png
如您所见,元素之间的间距不是恒定的!
<StackPanel MinWidth="150" cal:Bind.Model="{Binding}" Orientation="Horizontal">
<StackPanel.Resources>
<Style TargetType="{x:Type CheckBox}">
<Setter Property="Margin" Value="0,0,20,0"/>
</Style>
</StackPanel.Resources>
<CheckBox IsChecked="{Binding IsShown}" Content="{Binding ModuleName, Converter={StaticResource localizeModuleAndFunctionConverter}}"
cal:Message.Attach="[Event Click] = [Action FilterShownModuleFunctions]" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud) 请有人让我知道如何在xaml的堆栈面板背景中设置图像?我已经尝试了以下它抛出一个Background没有属性的错误Image
<Button.ToolTip>
<StackPanel Height="200" Width="200">
<StackPanel Height="30" Width="200" Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Top" >
<StackPanel.Background>
<Image Source="E:\R\watermark9.bmp"></Image>
</StackPanel.Background>
<Image VerticalAlignment="Top" Width="30" Height="30" Source="E:\My Projects\Interconnect_New\Interconnect\Resources\watermark9.bmp" Name="image1" />
<TextBlock FontFamily="Aharoni" FontSize="24" FontWeight="Bold" Foreground="Black" TextWrapping="Wrap" VerticalAlignment="Top" Height="30" HorizontalAlignment="Right" Width="143">
<Run FontFamily="Andalus" FontSize="18" FontWeight="Normal" Text="Hello! Fancy Tip" />
</TextBlock>
</StackPanel>
</StackPanel>
</Button.ToolTip>
Run Code Online (Sandbox Code Playgroud) 我有一个带网格的WPF窗口:
<Grid Name="mainGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20*" />
<ColumnDefinition Width="700*" />
<ColumnDefinition Width="190*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="80" />
<RowDefinition Height="220*" />
<RowDefinition Height="450*" />
<RowDefinition Height="160*" />
<RowDefinition Height="30" />
</Grid.RowDefinitions>
</Grid>
Run Code Online (Sandbox Code Playgroud)
在代码隐藏中,我将一个stackpanel添加到第一列,第二行mainGrid,但我希望stackpanel的最大宽度为第1列的宽度 - 50px.我偶然发现了stkPanel.Width = mainGrid.ColumnDefinitions(1).Width.ToString - 50,但是这会错误:
700*不能转换为double
有没有办法获得网格列的实际宽度,因为它显示在屏幕上以使用我想要的方式,或者我是否设置填充或类似?
谢谢,
马特
例如,我可以这样做:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Width="Auto">
<RowDefinition Width="Auto">
<RowDefinition Width="Auto">
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0">Header 1</TextBlock>
<TextBox Grid.Row="0" Grid.Column="1" MaxLines="1" />
<Button Grid.Row="0" Grid.Column="2">Send</Button>
<Button Grid.Row="0" Grid.Column="3">Save</Button>
<TextBlock Grid.Row="1" Grid.Column="0">Header 2</TextBlock>
<TextBox Grid.Row="1" Grid.Column="1" MaxLines="1" />
<Button Grid.Row="1" Grid.Column="2">Send</Button>
<Button Grid.Row="1" Grid.Column="3">Save</Button>
<TextBlock Grid.Row="2" Grid.Column="0">Header 3</TextBlock>
<TextBox Grid.Row="2" Grid.Column="1" MaxLines="1" />
<Button Grid.Row="2" Grid.Column="2">Send</Button>
<Button Grid.Row="2" Grid.Column="3">Save</Button>
</Grid>
Run Code Online (Sandbox Code Playgroud)
或者我可以这样做:
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>Header 1</TextBlock>
<TextBox MaxLines="1" />
<Button>Send</Button> …Run Code Online (Sandbox Code Playgroud) 我在这里查看了stackpanel类http://msdn.microsoft.com/en-us/library/system.windows.controls.stackpanel.aspx,它没有点击事件.
我正在开发一个Windows Phone 8应用程序,我有一个文本框和堆栈面板上的一些按钮.我想要包含一个可以单击stackpanel的功能,然后将其上的控件的可见性设置为折叠,然后再次单击它们时,它们将变为可见.
我该怎么做呢?
我需要用stackpanel(Frame)中的最后一个元素填充空格:
<DockPanel>
<StackPanel Orientation="Vertical">
<Frame NavigationUIVisibility="Hidden" Height="100" x:Name="_menu" />
<Frame NavigationUIVisibility="Hidden" x:Name="_mainFrame" />
</StackPanel>
</DockPanel>
Run Code Online (Sandbox Code Playgroud)
_mainFrame - 从_menu框架到底部填充空白区域
所以我有一个StackPanel,我将其用作ContentControl.我有一个地方,我希望根据我绑定的数据生成按钮,这一切都很好,但我希望按钮是水平布局,而不是垂直布局,就像当前正在发生的那样.这是一个截图:

这是我的ContentTemplate描述中的代码:
<StackPanel Name="wpReleaseButtons" Orientation="Horizontal" Grid.Row="2">
<ItemsControl IsTabStop="False" ItemsSource="{Binding Path=BranchCommands}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Tag="{Binding}" Padding="3">
<TextBlock Text="{Binding Path=DisplayValue}" />
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
不知道我在这里做错了什么.任何信息,将不胜感激.谢谢!
我以编程方式在堆栈面板中添加了一些控件.我想要做的是,我希望将此stackpanel中的一个控件放在另一个控件上.具体来说,我想在此堆栈面板中的图像上放置按钮.我在c#codebehind中找不到zindex属性.虽然看起来很简单,但我无法找到解决这个问题的任何线索.有人请......
我有一个HierarchicalDataTemplate,其中包含一些水平StackPanel中的简单项.上下文菜单也分配给根StackPanel容器:
<HierarchicalDataTemplate DataType="{x:Type data:GroupViewModel}"
ItemsSource="{Binding Path=Children}">
<StackPanel Orientation="Horizontal" Margin="2" ContextMenuOpening="groupContextMenuOpening">
<StackPanel.ContextMenu>
<StaticResource ResourceKey="groupContextMenu" />
</StackPanel.ContextMenu>
<Rectangle Width="16" Height="15" Fill="{Binding Converter={StaticResource HierarchyLevelConverter}}" Margin="0 0 3 0" Cursor="Hand" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown" >
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding SetCurrent}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Rectangle>
<Image Width="16" Height="15" Source="{Binding Path=GroupState, Converter={StaticResource GroupStateConverter}}" Cursor="Hand" Margin="0 0 3 0">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown" >
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding ToggleGroupState}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Image>
</StackPanel>
</HierarchicalDataTemplate>
Run Code Online (Sandbox Code Playgroud)
主机TreeView也使用ContextMenu.我们的想法是,如果您右键单击TreeView中的项目,您将获得它的ContextMenu.如果您右键在树视图中的空白区域中进行clik,您将获得具有较少选项的"默认"上下文菜单.
这一切都在解决一个奇怪的问题.如您所见,水平StackPanel在图像之间留下了边距.如果我在项目之间右键单击该空间,则会显示TreeView上下文菜单.我希望我的HierarchicalDataTemplate中定义的ContextMenu会弹出,因为我右键单击StackPanel本身.
我发现,如果我为StackPanel分配背景颜色,那么它可以正常工作,但我希望尽可能避免这种情况.
有任何想法吗?
stackpanel ×10
wpf ×8
c# ×3
.net ×2
grid ×2
xaml ×2
draw ×1
frame ×1
height ×1
itemscontrol ×1
margin ×1
silverlight ×1
visibility ×1
width ×1
z-index ×1