XAML 当我调整表单大小时,C# 视频的大小没有改变

XAML C# video does not change in size when i resize the form

运行 我的媒体播放器以 Stretch="None" 打开,但问题是当我调整它的大小时,我希望视频随着调整大小而缩放,所以如果我的媒体以 640x480 打开,那么我将尺寸调整为 320x240 我希望我的视频可以缩放,请参见下面的屏幕截图:

到目前为止一切顺利,媒体打开时已按视频大小缩放

但是当我尝试缩小屏幕以查看其他选项卡时,视频的大小就丢失了:/

XAML代码:

<Window x:Class="WpfApplication4.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="WPF Media Player" Height="300" Width="300"
    MinWidth="300" SizeToContent="WidthAndHeight"
    Topmost="True">


<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <ToolBar>
        <Button x:Name="button" Content="Open" Click="button_ClickOpen" />

        <Separator />
        <Button x:Name="button2" Content="Play" Click="button2_ClickPlay"/>

        <Button x:Name="button3" Content="Pause" Click="button3_ClickPause"/>

        <Button x:Name="button1" Content="Stop" Click="button1_ClickStop"/>
        <Button x:Name="button4" Content="Web" Click="button4_ClickWeb" />
    </ToolBar>

    <MediaElement Name="mediaElement1" Grid.Row="1" LoadedBehavior="Manual" Stretch="Uniform" />

<StatusBar Grid.Row="2">
    <StatusBar.ItemsPanel>
        <ItemsPanelTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
            </Grid>
        </ItemsPanelTemplate>
    </StatusBar.ItemsPanel>
    <StatusBarItem>
        <TextBlock Name="lblProgressStatus">00:00:00</TextBlock>
    </StatusBarItem>
    <StatusBarItem Grid.Column="1" HorizontalContentAlignment="Stretch">
        <Slider Name="slider1"  ValueChanged="slider1_ValueChanged" />
    </StatusBarItem>
        <StatusBarItem Grid.Column="2">
            <Slider Name="slider2" Width="50" Height="24" Maximum="1" ValueChanged="slider2_ValueChanged" />
        </StatusBarItem>
    </StatusBar>
</Grid>

当您用 Stretch="None" 打开 MediaElement 时,它不会拉伸。没有方向。你想让它伸展,所以你需要选择 "None" 以外的另一个值。我可以想象 "Uniform" 很适合制作视频,但只有您自己知道您想要从播放器中获得什么。

尝试将 MediaElement 放入 ViewBox 并设置 ViewBox 的 Stretch 属性 UniformToFill.