我正在尝试创建一个png捕获StackPanel,但是当我保存时,我得到一个扭曲的视图,其中所有内容都是黑色矩形,并且大小不正确.图像保存中的宽度和高度是正确的,但是所有内容都被强制到顶部并挤压在一起
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Views="clr-namespace:POExpress.Views" x:Class="POExpress.MainWindow"
Title="My Window" Height="500" MinWidth="1000" Width="1000">
<Grid>
<TabControl>
<TabItem Header="My Epics">
<Grid Background="#FFE5E5E5">
<Border Margin="0,52,0,0" BorderThickness="1" BorderBrush="Black">
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<StackPanel x:Name="sp_ports" Orientation="Vertical"/>
</ScrollViewer>
</Border>
<Button x:Name="btn_capture" Content="Save to png" Margin="0,10,114,0" VerticalAlignment="Top" Height="31" Background="White" HorizontalAlignment="Right" Width="99" Click="Btn_capture_Click"/>
</Grid>
</TabItem>
</TabControl>
</Grid>
Run Code Online (Sandbox Code Playgroud)
public RenderTargetBitmap GetImage()
{
Size size = new Size(sp_ports.ActualWidth, sp_ports.ActualHeight);
if (size.IsEmpty)
return null;
RenderTargetBitmap result = new RenderTargetBitmap((int)size.Width, (int)size.Height, 96, 96, PixelFormats.Pbgra32);
DrawingVisual drawingvisual = new DrawingVisual();
using (DrawingContext context = …Run Code Online (Sandbox Code Playgroud) 鉴于非常简单的wpf应用程序
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="800">
<Grid>
<ToolBar Height="50" >
<MenuItem Header="Test1" />
<MenuItem Header="Test2" />
<StackPanel Orientation="Horizontal">
<Separator />
<MenuItem Header="Test3" />
<MenuItem Header="Test4" />
<MenuItem Header="Test5" />
</StackPanel>
</ToolBar>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
Separator元素缩小为空.如果我在StackPanel开始之前放置Separator,它就会显示出来.为什么会这样?是否有可以在某处应用的样式设置以避免这种情况?
可能很容易,但我很难弄清楚这一点(谷歌似乎没有多大帮助).
如何遍历StackPanel中静态声明的元素(没有数据绑定 - 在xaml中声明元素)?
任何帮助赞赏!
我需要能够处理WPF StackPanel上的双击和单击事件.但是没有StackPanel的DoubleClick事件.我想在这两个EventHandler中做两个不同的操作.
知道怎么做吗?
谢谢
我有一个stackpanel,其中包含一些在运行时添加或删除的用户控件.这些元素有一个索引,当我新建它时,我需要保留这些元素,我需要保持这些元素按索引排序,所以我做了一个快速排序函数,根据索引对它们进行排序,但是在交换的行上
y = items[i]; //y is a temp variable
items[i] = items[j];
Run Code Online (Sandbox Code Playgroud)
我明白了
"指定的索引已在使用中.首先断开指定索引处的Visual子节点"
我尝试将它们复制到临时变量,从集合中删除它们然后使用UIElementCollection中的Insert函数将它们分配到它们的右侧索引,但后来我得到了
"指定的Visual已经是另一个Visual的子项或CompositionTarget的根"
是否有我需要的克隆元素或某些东西在某处丢失?
我想知道是否可以将StackPanel的背景设置为Windows Phone 7用户选择的重音(主题)颜色.我听说你应该使用样式,因此它可以用于当前xaml页面上的所有StackPanel.但是我有点迷茫.
我当前静态背景颜色的示例:
<StackPanel Width="400" Background="#FF1BA1E2" Margin="0, 10, 0, 0" Tag="ABC">
<TextBlock Text="ABC" FontSize="50" Margin="10" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
我在这里先向您的帮助表示感谢.
PS:万一有人想知道十六进制值"#FF1BA1E2"是默认WP7蓝色重音(主题)的颜色.
我的WPF项目中有一个StackPanel控件,它位于Grid的第0列第2行.如何将StackPanel大小自动调整为该网格单元的大小?将StackPanel宽度和高度设置为"auto"只会将其大小调整为其内容.我可以明确地将其宽度和高度设置为数值,但我想知道是否有更清晰,更准确的方法.谢谢.
相关的XAML:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="74*"/>
<RowDefinition Height="74*"/>
<RowDefinition Height="421*"/>
</Grid.RowDefinitions>
<Label Content="{StaticResource LoginWindow_Title}" Style="{StaticResource TitleH1}" Grid.ColumnSpan="2"/>
<Label Content="{StaticResource LoginWindow_Subtitle}" Style="{StaticResource TitleH2}" Grid.Row="1" Grid.ColumnSpan="2"/>
<Border BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Center" Grid.Row="2" VerticalAlignment="Top">
<StackPanel HorizontalAlignment="Left" Grid.Row="2" VerticalAlignment="Top">
<Label Content="Log in"/>
</StackPanel>
</Border>
</Grid>
Run Code Online (Sandbox Code Playgroud) 假设我们有一个水平方向的Stackpanel,宽度为100px.
在里面我制作十一平方的画布图纸,宽度为10px.
这意味着最后一个方块将在视图之外,因为它将扩展stackpanel宽度10px.所以我希望这个方块在新的一行.
是否有控件可以做到这一点?困难的部分是Stackpanel将是动态的,所以如果我调整WPF窗口的大小,Stackpanel将是50px,将产生2个完整的方形线和第三个带有单个方形的线.
我希望这能成为现实.我怎样才能做到这一点?
谢谢你,乔纳坦
有没有办法在不改变StackPanel中这些控件的实际顺序的情况下更改StackPanel中控件的绘制顺序?
我问的原因是我们在按钮之间有一个边距为0的按钮栏.活动按钮与相邻按钮重叠(即边距设置为-10).这里的问题是稍后绘制右按钮,因此在顶部而不是活动按钮上绘制.
我担心我需要制作一个基于网格的自定义控件.
请有人让我知道如何在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) stackpanel ×10
wpf ×9
c# ×5
xaml ×3
click ×1
draw ×1
elements ×1
loops ×1
mouseevent ×1
separator ×1
sorting ×1
toolbar ×1
wpf-controls ×1