我想在一个固定的位置放置一个容器(包含任何自定义内容,例如ListView,...)。按下按钮时应出现容器。看看这张图片:
按我和点按我按钮。如果单击单击我,则应显示上面的红色容器。与按我相同。
我的问题:我怎么能意识到这样的事情?红色容器应出现在所有其他控件(z-index)上。 Canvas
是最佳选择吗?这个容器的大小是多少?
这个问题非常抽象。我不想要任何解决方案,只是关于我应该使用的容器的一些想法以及它应该如何放置。
顺便问一个问题。
我应该在XAML中创建红色容器并仅更改visiblity
的状态吗?或者我应该在C#中创建红色容器?在性能方面。
也许一些搜索关键字就足够了。因为我不知道怎么称呼它。
答案 0 :(得分:2)
此网站更多的是提供答案,而不是根据意见添加讨论。所以本着事物的精神,并且因为通过一个例子来回答这个问题要容易得多,这就是我将如何去做。
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Border x:Name="Container1" HorizontalAlignment="Left" Width="120" Height="100"
Grid.Row="1" BorderBrush="Red" BorderThickness="1" Visibility="Hidden" />
<Border x:Name="Container2" HorizontalAlignment="Right" Width="120" Height="100"
Grid.Row="1" BorderBrush="Red" BorderThickness="1" Visibility="Hidden" />
<Button x:Name="Button1" HorizontalAlignment="Left" Width="100" Height="30"
Grid.Row="2" Content="Press Me" Click="Button1_Click" />
<Button x:Name="Button2" HorizontalAlignment="Right" Width="100" Height="30"
Grid.Row="2" Content="Click Me" Click="Button2_Click" />
</Grid>
对于后面的代码,我会做这样的事情:
private void Button1_Click(object sender, RoutedEventArgs e)
{
bool isVisible = Container1.Visibility == Visibility.Visible;
Container1.Visibility = isVisible ? Visibility.Hidden : Visibility.Visible;
}
private void Button2_Click(object sender, RoutedEventArgs e)
{
bool isVisible = Container2.Visibility == Visibility.Visible;
Container1.Visibility = isVisible ? Visibility.Hidden : Visibility.Visible;
}
<强> 1。我怎么能意识到这样的事情呢?红色容器应显示在所有其他控件上(z-index)。
这是直截了当的,将我上面示例中的<Grid>
元素放在XAML的底部将使其位于每个其他控件的顶部,因为元素默认放在z-index基础上他们在XAML中的级联顺序。
<强> 2。 Canvas是最佳选择吗?
除非你的顶级容器(Window,Page,UserControl)具有固定的宽度和高度,否则我建议坚持使用能够更好地处理用户调整大小的容器的容器。如果您使用了Canvas并且用户能够更改顶级容器的大小,则每次调整顶级容器以保持位置时,您都必须手动重新定位按钮和边框元素。
第3。关于这个容器的大小是什么?
这完全取决于您希望制作布局的大小,在示例中,我在元素上放置尺寸,这些元素可以在最小容器尺寸为340 x 340像素的情况下正确显示。
<强> 4。我应该在XAML中创建红色容器,只改变visiblity的状态吗?或者我应该在C#中创建红色容器?在表现方面。
放置&#34;容器&#34;你的XAML中的元素是你最好的选择,但老实说你不会注意到速度上的差异。将它们放入XAML的唯一好处是它更清洁。