簡體   English   中英

如何在WPF中單擊按鈕更改網格的比例

[英]How can I change the scale of a grid in button click in WPF

我在網格中有此UI。 4X4相機視圖 這是XAML代碼

<Window x:Class="Apps.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:controls="clr-namespace:Ozeki.Media;assembly=OzekiSDK"
    Closing="Window_Closing"
    ResizeMode="CanMinimize" WindowStartupLocation="CenterScreen" FontFamily="Times New Roman">
<Grid Margin="0,0,0,1">
    <Grid Margin="0,53,0,31">
        <Grid x:Name="gridView">
            <Grid.RowDefinitions>
                <RowDefinition Height="293"/>
                <RowDefinition Height="462"/>
                <RowDefinition Height="355"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="553"/>
                <ColumnDefinition Width="553"/>
            </Grid.ColumnDefinitions>
            <GroupBox Grid.Column="0" Header="Camera 1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" FontSize="20">
                <controls:VideoViewerWPF Name="viewVid1"/>
            </GroupBox>
            <GroupBox Grid.Column="1" Header="Camera 2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="293" Margin="5,0,10,0" FontSize="20">
                <controls:VideoViewerWPF Name="viewVid2"/>
            </GroupBox>
            <GroupBox Grid.Column="0" Header="Camera 3" HorizontalAlignment="Stretch" Grid.Row="1" VerticalAlignment="Stretch" Margin="0,0,0,179" FontSize="20">
                <controls:VideoViewerWPF Name="viewVid3"/>
            </GroupBox>
            <GroupBox Grid.Column="1" Header="Camera 4" HorizontalAlignment="Stretch" Margin="5,0,10,179" Grid.Row="1" VerticalAlignment="Stretch" FontSize="20">
                <controls:VideoViewerWPF Name="viewVid4"/>
            </GroupBox>
        </Grid>
    </Grid>
</Grid>

我想將按鈕單擊中的UI更改為這樣。

1:3攝像機視圖

我不知道從哪里開始,希望有人能幫助我謝謝你...

更改布局並在Grid中創建更多RowDefinitionColumnDefinition 使用Grid.RowSpanGrid.ColumnSpan屬性配置控件應如何填充Grid。 這可以在xaml和后台代碼中完成。

演示(為簡單起見,帶有邊框)

<Window x:Class="WpfApplication3.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="320" Width="480">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition/>            
        </Grid.RowDefinitions>

        <StackPanel Orientation="Horizontal">
            <Button Content="2x2" Margin="5" Click="Button_2x2"/>
            <Button Content="1x3" Margin="5" Click="Button_1x3"/>
        </StackPanel>

        <Grid Grid.Row="1">
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
                <RowDefinition/>
                <RowDefinition/>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>

            <Border Name="A" Grid.Row="0" Grid.RowSpan="3" 
                    Grid.Column="0" Grid.ColumnSpan="2"
                    Background="Aqua"/>

            <Border Name="B" Grid.Row="0" Grid.RowSpan="3" 
                    Grid.Column="2" Grid.ColumnSpan="2"
                    Background="Blue"/>

            <Border Name="C" Grid.Row="3" Grid.RowSpan="3" 
                    Grid.Column="0" Grid.ColumnSpan="2"
                    Background="Chocolate"/>

            <Border Name="D" Grid.Row="3" Grid.RowSpan="3" 
                    Grid.Column="2" Grid.ColumnSpan="2"
                    Background="DeepPink"/>
        </Grid>
    </Grid>
</Window>

2x2狀態

點擊處理程序會更改布局:

private void Button_2x2(object sender, RoutedEventArgs e)
{
    A.SetValue(Grid.RowProperty,0);
    A.SetValue(Grid.RowSpanProperty,3);
    A.SetValue(Grid.ColumnProperty,0);
    A.SetValue(Grid.ColumnSpanProperty,2);

    B.SetValue(Grid.RowProperty, 0);
    B.SetValue(Grid.RowSpanProperty, 3);
    B.SetValue(Grid.ColumnProperty, 2);
    B.SetValue(Grid.ColumnSpanProperty, 2);

    C.SetValue(Grid.RowProperty, 3);
    C.SetValue(Grid.RowSpanProperty, 3);
    C.SetValue(Grid.ColumnProperty, 0);
    C.SetValue(Grid.ColumnSpanProperty, 2);

    D.SetValue(Grid.RowProperty, 3);
    D.SetValue(Grid.RowSpanProperty, 3);
    D.SetValue(Grid.ColumnProperty, 2);
    D.SetValue(Grid.ColumnSpanProperty, 2);
}
private void Button_1x3(object sender, RoutedEventArgs e)
{
    A.SetValue(Grid.RowProperty, 0);
    A.SetValue(Grid.RowSpanProperty, 6);
    A.SetValue(Grid.ColumnProperty, 0);
    A.SetValue(Grid.ColumnSpanProperty, 3);

    B.SetValue(Grid.RowProperty, 0);
    B.SetValue(Grid.RowSpanProperty, 2);
    B.SetValue(Grid.ColumnProperty, 3);
    B.SetValue(Grid.ColumnSpanProperty, 1);

    C.SetValue(Grid.RowProperty, 2);
    C.SetValue(Grid.RowSpanProperty, 2);
    C.SetValue(Grid.ColumnProperty, 3);
    C.SetValue(Grid.ColumnSpanProperty, 1);

    D.SetValue(Grid.RowProperty, 4);
    D.SetValue(Grid.RowSpanProperty, 2);
    D.SetValue(Grid.ColumnProperty, 3);
    D.SetValue(Grid.ColumnSpanProperty, 1);
}

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM