我已经在窗口中添加了一个用户控件,我想将其放在特定的网格中。但是用户控件不能容纳网格,它在网格外部。看起来像这样: User Control in Window
这是我的用户控件(TestGate)
<UserControl x:Class="MA.TestGate"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:MA"
mc:Ignorable="d" Height="auto" Width="auto">
<Grid >
<Canvas Name="GateCanvas" Width="Auto" Height="Auto" >
<Rectangle Name="Base" Fill="White" Height="300" Canvas.Left="0" Stroke="Black" StrokeThickness="1" Canvas.Top="0" Width="300"/>
<Polygon Name="Input_1" Points="0,25 86,75 0,125" Stroke="Black" Fill="White"></Polygon>
<Polygon Name="Input_2" Points="0,175 86,225 0,275" Stroke="Black" Fill="White"></Polygon>
<Polygon Name="Output" Points="275,125 275,175 300,175 300,125" Stroke="black" Fill="White"></Polygon>
</Canvas>
</Grid>
这是我的窗户
<Window x:Class="MA.GATEWINDOW"
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:myControls ="wpf"
xmlns:local="clr-namespace:MA"
mc:Ignorable="d"
Title="GATEWINDOW" Height="720" Width="1280" Name="TheAndGate">
<Grid ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition>
</ColumnDefinition>
<ColumnDefinition Width="1100"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid Grid.Row="0" Grid.Column="0" Name="Gate" ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions></Grid.ColumnDefinitions>
<local:TestGate Grid.Row="0" Grid.Column="0" ></local:TestGate>
窗口是这样的:enter image description here
如果有人可以帮助我解决这个问题,我将非常感激!谢谢!
答案 0 :(得分:1)
好吧,感谢@FelixCastor,问题已解决。 用户控件应该这样重写
androidx.drawerlayout.widget.DrawerLayout
在窗口中,我们还可以进行如下更改:
<Viewbox Height="auto" Width="auto">
<Canvas Height="300" Width=" 300">
<Rectangle Name="Base" Fill="White" Height="300" Canvas.Left="0" Stroke="Black" StrokeThickness="1" Canvas.Top="0" Width="300"/>
<Polygon Name="Input_1" Points="0,25 86,75 0,125" Stroke="Black" Fill="White"></Polygon>
<Polygon Name="Input_2" Points="0,175 86,225 0,275" Stroke="Black" Fill="White"></Polygon>
<Polygon Name="Output" Points="275,125 275,175 300,175 300,125" Stroke="black" Fill="White"></Polygon>
</Canvas>
</Viewbox>
它看起来像这样: Result 问题解决了。
答案 1 :(得分:0)
由于我不完全了解您的问题,所以我没有给出解决方案(并且我看到其他人已经在尝试中提供尽可能多的注释),但是我建议您使代码“更容易”以备将来使用。这些只是建议,因为我在使用WPF时曾经做过同样的“错误”,但只需很少的更改就可以更容易阅读:
<Grid.ColumnDefinitions></Grid.ColumnDefinitions>
完全没用(空)
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
几乎没有用,因为只有一列(但实际上,如果您认为将来可以扩展它,可以保留它)。
<RowDefinition></RowDefinition>
可以重写<RowDefinition/>
Grid.Row="0" Grid.Column="0"
不必要的信息,如果为“ 0”,则可以将其删除
您的代码将变为:
<Grid ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="1100"/>
</Grid.ColumnDefinitions>
<Grid Name="Gate" ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<local:TestGate Grid.Row="0" Grid.Column="0" ></local:TestGate>