我应该如何向WPF窗口添加多个控件



免责声明,我对WPF相当陌生。

目前,每当我将另一个控件放置到设计器上时,所有其他控件都会从XAML代码中完全删除。因此,我什么都做不了。

我应该为每个控件制作一个单独的XAML文件吗?还是有什么奇怪的事情发生了?

作为参考,这里是我当前的XAML代码:

<Window x:Class="Lively.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Lively"
mc:Ignorable="d"
Title="Lively" Height="450" Width="662" Foreground="Black" AllowsTransparency="True" WindowStyle="None" ResizeMode="CanMinimize" WindowStartupLocation="CenterScreen" Cursor="Arrow" MouseDown="DragWindow">
<Window.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<LinearGradientBrush.RelativeTransform>
<TransformGroup>
<ScaleTransform CenterY="0.5" CenterX="0.5" ScaleY="2"/>
<SkewTransform CenterY="0.5" CenterX="0.5"/>
<RotateTransform Angle="40.601" CenterY="0.5" CenterX="0.5"/>
<TranslateTransform/>
</TransformGroup>
</LinearGradientBrush.RelativeTransform>
<GradientStop Color="Black" Offset="0.033"/>
<GradientStop Color="#FF360606" Offset="1"/>
<GradientStop Color="#FF0F0202"/>
<GradientStop Color="#FF0D0101" Offset="0.248"/>
<GradientStop Color="#FE170202"/>
<GradientStop Color="#FF0B0101" Offset="0.211"/>
<GradientStop Color="#FF080808" Offset="0.256"/>
<GradientStop Color="#FF2E0606" Offset="1"/>
<GradientStop Color="#FF0E0707" Offset="1"/>
<GradientStop Color="#FF010000" Offset="0.274"/>
</LinearGradientBrush>
</Window.Background>
<Window.OpacityMask>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="0.207"/>
<GradientStop Color="Black" Offset="0.007"/>
</LinearGradientBrush>
</Window.OpacityMask>
<Image x:Name="Logo" Source="src/Assets/Core/Lively_32x32.png" HorizontalAlignment="Left" Height="39" Margin="619,10,0,0" VerticalAlignment="Top" Width="33" RenderTransformOrigin="0.467,0.5" Stretch="None" ToolTip="Just the logo :)"/>
</Window>

为了复合一个例子,如果我在Designer上放下一个标签,整个<Image>标记将被删除,就好像它从未存在过一样。

是的,Window元素可以包含单个元素。但是您可以将它作为一个类似于Grid的容器,或者任何其他可以将其他元素作为子元素的容器元素。在里面你可以添加任意数量的元素

<Window x:Class="GPRS_Simulator.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:GPRS_Simulator"
mc:Ignorable="d"
Title="GPRS SIMULATOR" Height="393" Width="708.5" Loaded="winloaded" ResizeMode="NoResize">
<Grid>
<Label .... your label parameters/>
<ComboBox .... your comboBox parameters/>
<Button .... your button parameters/>
... other elements
</Grid>
</Window>

所以代替你的

<Image x:Name="Logo" Source=.../>

您应该使用一个容器元素,就像我在上面使用的Grid一样,来包含多个元素。

例如。

<Grid>
<Image x:Name="Logo" Source=.../>
<Button x:Name= ...../>
<other elements you want to add ... ... />
</Grid>

相关内容

  • 没有找到相关文章

最新更新