Я работаю над приложением в WPF (C#), которое будет использовать веб-камеру, но у меня возникают проблемы с основным окном. Я получаю мой желаемый вид, когда я запускаю его в Windows 7, однако, когда я запускаю его на машине с Windows 8.1, он выглядит иначе.Окно WPF, отличное от Windows 8.1 и Windows 7
Это желаемый вид (Windows 7)
Это то, что он выглядит как на Windows, 8.1 (она не растягивается на весь экран при максимальной)
Вот мой код MainWindow.xaml
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cam="clr-namespace:WebcamControl;assembly=WebcamControl"
Title="WPF Webcam" Height="664.333" Width="645">
<Window.Resources>
<DataTemplate x:Key="DevicesListTemplate">
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</Window.Resources>
<Grid Margin="0,0,0,0">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<cam:Webcam Name="WebcamCtrl" Margin="10" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
<StackPanel Margin="0,0,0,0" Orientation="Horizontal" Grid.Row="1">
<ComboBox HorizontalAlignment="Left" Height="23" Width="200" VerticalAlignment="Center"
x:Name="AudioDevicesComboBox" ItemTemplate="{StaticResource DevicesListTemplate}" Margin="10,0,10,0"/>
<ComboBox Height="22" Width="200" HorizontalAlignment="Right" VerticalAlignment="Center"
x:Name="VideoDevicesComboBox" ItemTemplate="{StaticResource DevicesListTemplate}" Margin="0,0,10,0"/>
<TextBox x:Name="tbScan" HorizontalAlignment="Left" Height="22" Margin="0,0,10,0" TextWrapping="Wrap" VerticalAlignment="Center" Width="100" KeyDown="tbScan_KeyDown"/>
<Button Content="Start" HorizontalAlignment="Left" Height="22" Margin="0,0,10,0" VerticalAlignment="Center" Width="78" Click="Button_Click_1"/>
</StackPanel>
</Grid>
Это XAML из пользовательского элемента управления веб
<UserControl x:Class="Webcam"
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:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
MinHeight="100" MinWidth="100"
mc:Ignorable="d">
<Grid>
<WindowsFormsHost Name="WinFormsHost" Margin="0" Background="{x:Null}">
<wf:Panel x:Name="WebcamPanel"/>
</WindowsFormsHost>
</Grid>
Я также нашел это событие в исходном коде Webcam.dll.
Private Sub Webcam_SizeChanged(sender As Object, e As SizeChangedEventArgs) Handles Me.SizeChanged
If (deviceSource IsNot Nothing) Then
deviceSource.PreviewWindow.SetSize(New Size(CInt(Me.ActualWidth), CInt(Me.ActualHeight)))
End If
End Sub
Любая помощь была бы принята с благодарностью!
Я добавил рамку вокруг элемента «cam: Webcam ..» в главном окне, и он растягивается, поэтому я думаю, что это должно быть что-то в пользовательском элементе управления веб-камерой, что не позволяет растягиваться. – mattc19
Было бы трудно дать кому-либо конкретный совет без примера _minimal_, _complete_. Например. один, который показывает разницу в Win7 и Win8 с чистым кодом WPF, не используя библиотеку веб-камеры или аппаратное обеспечение. Тем не менее, вы пытались использовать свойство «Stretch» в пользовательском элементе управления? –
Вы пробовали обернуть его в окне просмотра? –