2017-01-12 4 views
1

я уже начинаю в C# и моя проблема в том, что он следующий:Поставьте значение/открытые файлы в WPF из информаций вы положили в другой WPF

Я хотел бы использовать WPF с кнопками, и т.д. полей ввода .. для управления (отображение информации и видео в) другого WPF.

Но я не могу найти, как правильно взаимодействовать с другим WPF.

код моего WPF окна:

<Window x:Class="WPF_AVC.MainWindow" 
    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:local="clr-namespace:WPF_AVC" 
    mc:Ignorable="d" 
    Title="ConfiguratorAVC" Height="350" Width="525"> 
<Grid Background="Black"> 
    <TextBox x:Name="textBox" HorizontalAlignment="Center" Height="22" Margin="0,48,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Background="Black" BorderBrush="#FF707070" Foreground="#FF707071" SelectionBrush="Black" TextChanged="textBox_TextChanged" KeyDown="OnKeyDownHandler"/> 
    <TextBlock x:Name="textBlock" HorizontalAlignment="Center" Margin="0,32,0,0" TextWrapping="Wrap" Text="Entrez un mot" VerticalAlignment="Top" Width="120" Foreground="#FF707071" TextAlignment="Center"/> 
    <Button x:Name="generate_words_btn" Content="Generer hologramme" HorizontalAlignment="Center" Margin="0,76,0,0" VerticalAlignment="Top" Width="120" Background="Black" Foreground="#FF707070" Click="generate_words_btn_Click"/> 
    <Border Margin="0,267,-0.2,22" HorizontalAlignment="Center"> 
     <Grid> 
      <Button x:Name="Pay_btn" Content="►" HorizontalAlignment="Center" Margin="0,0,243,0" VerticalAlignment="Top" Width="74" Background="Black" FontWeight="Bold" Foreground="#FF707071" HorizontalContentAlignment="Center" Height="30" Click="Pay_btn_Click" OpacityMask="Black"> 
       <Button.BindingGroup> 
        <BindingGroup/> 
       </Button.BindingGroup> 
      </Button> 
      <Button x:Name="Stop_btn" Content="■" HorizontalAlignment="Center" Margin="160,0,81,0" VerticalAlignment="Top" Width="76" Background="Black" FontWeight="Bold" Foreground="#FF707071" HorizontalContentAlignment="Center" Height="30" Click="Stop_btn_Click"> 
       <Button.BindingGroup> 
        <BindingGroup/> 
       </Button.BindingGroup> 
      </Button> 
      <Button x:Name="Pause_btn" Content="❚❚" HorizontalAlignment="Center" Margin="79,0,162,0" VerticalAlignment="Center" Width="76" Background="Black" FontWeight="Bold" Foreground="#FF707071" HorizontalContentAlignment="Center" Height="30" Click="Pause_btn_Click"> 
       <Button.BindingGroup> 
        <BindingGroup/> 
       </Button.BindingGroup> 
      </Button> 
      <Button x:Name="Open_btn" Content="Open" HorizontalAlignment="Center" Margin="241,0,0,0" VerticalAlignment="Top" Width="76" Background="Black" FontWeight="Bold" Foreground="#FF707071" HorizontalContentAlignment="Center" Height="30" Click="Open_btn_Click" OpacityMask="Black"> 
       <Button.BindingGroup> 
        <BindingGroup/> 
       </Button.BindingGroup> 
      </Button> 
     </Grid> 
    </Border> 
    <ListBox x:Name="listBox" HorizontalAlignment="Left" Height="84" Margin="53,120,0,0" VerticalAlignment="Top" Width="100" Background="Black" BorderBrush="#FF707070"> 
     <ListBoxItem Content="Iron Man" Foreground="#FF707071" Selected="ListBoxItem_Selected"/> 
     <ListBoxItem Content="Daft Punk" Foreground="#FF707071" Selected="ListBoxItem_Selected_1"/> 
     <ListBoxItem Content="Link Shield" Foreground="#FF707071" Selected="ListBoxItem_Selected_2"/> 
     <ListBoxItem Content="Anonymous" Foreground="#FF707071" Selected="ListBoxItem_Selected_3"/> 
    </ListBox> 

</Grid> 

<Window x:Name="holoAvcWindow" x:Class="WPF_AVC.DisplaynWindow" 
    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:local="clr-namespace:WPF_AVC" 
    mc:Ignorable="d" 
    Title="HoloAVC" Height="950.333" Width="1600" Background="Black" WindowStyle="ToolWindow" SnapsToDevicePixels="True" ResizeMode="NoResize" WindowStartupLocation="CenterScreen" > 
<Window.BindingGroup> 
    <BindingGroup/> 
</Window.BindingGroup> 
<Grid> 
    <MediaElement x:Name="mediaElement" HorizontalAlignment="Center" Height="720" Margin="0" VerticalAlignment="Center" Width="1280"/> 
    <Grid Margin="336,0,336,50"> 
     <MediaElement x:Name="videoDisplayElement" Height="300" VerticalAlignment="Top" Margin="0,311,622,0" RenderTransformOrigin="0.5,0.5" OpacityMask="Black"> 
      <MediaElement.RenderTransform> 
       <TransformGroup> 
        <ScaleTransform/> 
        <SkewTransform/> 
        <RotateTransform Angle="-90"/> 
        <TranslateTransform/> 
       </TransformGroup> 
      </MediaElement.RenderTransform> 
     </MediaElement> 
     <MediaElement x:Name="videoDisplayElement_Copy" HorizontalAlignment="Center" Height="300" Width="300" Margin="311,622,311,0" RenderTransformOrigin="0.5,0.5" OpacityMask="Black" VerticalAlignment="Top"> 
      <MediaElement.RenderTransform> 
       <TransformGroup> 
        <ScaleTransform/> 
        <SkewTransform/> 
        <RotateTransform Angle="180"/> 
        <TranslateTransform/> 
       </TransformGroup> 
      </MediaElement.RenderTransform> 
     </MediaElement> 
     <MediaElement x:Name="videoDisplayElement_Copy1" HorizontalAlignment="Center" Height="300" VerticalAlignment="Top" Width="300" Margin="311,0" OpacityMask="Black"/> 
     <MediaElement x:Name="videoDisplayElement_Copy2" HorizontalAlignment="Left" Height="300" VerticalAlignment="Top" Width="300" Margin="622,311,0,0" RenderTransformOrigin="0.5,0.5" OpacityMask="Black"> 
      <MediaElement.RenderTransform> 
       <TransformGroup> 
        <ScaleTransform/> 
        <SkewTransform/> 
        <RotateTransform Angle="+90"/> 
        <TranslateTransform/> 
       </TransformGroup> 
      </MediaElement.RenderTransform> 
     </MediaElement> 
     <TextBlock x:Name="textBlock2" HorizontalAlignment="Left" Margin="60,371,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Foreground="White" FontSize="48" Width="300" Height="180" RenderTransformOrigin="0.5,0.5" TextAlignment="Center"> 
      <TextBlock.RenderTransform> 
       <TransformGroup> 
        <ScaleTransform/> 
        <SkewTransform/> 
        <RotateTransform Angle="-90"/> 
        <TranslateTransform/> 
       </TransformGroup> 
      </TextBlock.RenderTransform> 
     </TextBlock> 
    </Grid> 
    <TextBlock x:Name="textBlock1" HorizontalAlignment="Left" Margin="647,120,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Foreground="White" FontSize="48" Width="300" Height="180" TextAlignment="Center"/> 
    <TextBlock x:Name="textBlock3" HorizontalAlignment="Left" Margin="898,371,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Foreground="White" FontSize="48" Width="300" Height="180" RenderTransformOrigin="0.5,0.5" TextAlignment="Center"> 
     <TextBlock.RenderTransform> 
      <TransformGroup> 
       <ScaleTransform/> 
       <SkewTransform/> 
       <RotateTransform Angle="90"/> 
       <TranslateTransform/> 
      </TransformGroup> 
     </TextBlock.RenderTransform> 
    </TextBlock> 
    <TextBlock x:Name="textBlock4" HorizontalAlignment="Left" Margin="647,622,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Foreground="White" FontSize="48" Width="300" Height="180 
       " RenderTransformOrigin="0.5,0.5" TextAlignment="Center"> 
     <TextBlock.RenderTransform> 
      <TransformGroup> 
       <ScaleTransform/> 
       <SkewTransform/> 
       <RotateTransform Angle="180"/> 
       <TranslateTransform/> 
      </TransformGroup> 
     </TextBlock.RenderTransform> 
    </TextBlock> 
</Grid> 

Я знаю, что коды выше не оптимизированы.

Я хотел бы понять, как из ввода в первом WPF вы можете отображать видео во втором WPF, например.

Спасибо!

+0

Есть ли какая-то особая причина использовать отдельные окна, а не элементы управления в том же окне, что и дисплей. В любом случае - вот некоторая помощь при запуске второго окна wpf из первого - http://stackoverflow.com/questions/11133947/how-to-open-second-window-from-first-window-in-wpf - пока ваши элементы управления во втором окне являются общедоступными, чем вы можете получить к ним доступ через переменную. – PaulF

+0

Причина заключается в том, чтобы узнать, как заставить их общаться. Панель управления и окно дисплея (панель управления должна оставаться открытой и делать динамические изменения в панели просмотра). Я видел, как некоторые говорили о MVVM, поэтому я смотрю в этом направлении, но вряд ли смогу приспособить его к моей проблеме. –

ответ

0

Есть много возможностей, которые вы можете сделать. Если «играть» кнопку, чтобы открыть второй МОФ вы можете добавить событие щелчка к Play_btn:

private void Play_btn_Click(object sender, RoutedEventArgs e) 
{ 
holoAvcWindow avc = new holoAvcWindow(); 
avc.Show(); 
this.Close(); 
} 

Или вы можете сделать .ShowDialog(); и не пишут this.Close();, если вы хотите, оба открыты, но пользователь вона не сможете использовать первый экран, если он не закрывает второй. Или просто удалите this.Close(); и сохраните .Show();. Таким образом, пользователь сможет использовать оба одновременно.

Итак, мы имеем:

  • .Show() и this.Close(): закрывает первый экран и показать holoAcvWindow.

  • .Show() без this.Close()НЕ РЕКОМЕНДУЕТСЯ: будет держать как открытым, и пользователь будет иметь возможность использовать оба. Это не лучший выбор, потому что, если есть кнопка, открывающая второе окно, пользователь может открыть 1000 окон, если захочет.

  • .ShowDialog(): откроется второй holoAvcWindow. Будет держать MainWindow открытым, но пользователь не сможет использовать пользователя, если holoAvcWindow не будет закрыт.

Кроме того, если есть что-то вам нужен первый экран, чтобы отправить Foward ко второму, URL-адрес, например, просто создать inicialized метод, который требует параметра.Как:

public holoAvcWindow(string url) 
{ 
    InitializeComponent(); 
} 

и вызовите второй экран, как это:

private void Play_btn_Click(object sender, RoutedEventArgs e) 
{ 
     holoAvcWindow avc = new holoAvcWindow(url); 
     avc.Show(); 
     this.Close(); 
} 

Если вы хотите, оба экрана открывается при загрузке программы, добавьте для инициализации метода главного окна:

 holoAvcWindow avc = new holoAvcWindow(url); 
     avc.Show(); 

Должно выглядеть так:

public MainWindow() 
{ 
    InitializeComponent(); 
    holoAvcWindow avc = new holoAvcWindow(); 
    avc.Show(); 
} 
+0

Я хотел бы открыть оба окна при запуске программы. Кнопки Play Pause и Stop будут использоваться только для управления видео. В списке будет выбран видеоролик, и кнопка воспроизведения начнет воспроизведение видео. Текст bo будет отображать текст в текстовое поле в окне отображения. Я бы хотел «обновить»/изменить текст и видео из окна управления WPF. –

+0

Ответьте, как установить оба окна при инициализации программы. – Pelicer

+0

Спасибо! Я попробую ! –