2012-08-02 10 views
6

मुझे दो एक्सएएमएल/डब्ल्यूपीएफ विंडोज़ (नेविगेशनविंडो से व्युत्पन्न) के साथ एक एप्लीकेशन मिला है, प्रत्येक विंडो में एक अभिभावक उपयोगकर्ता नियंत्रण है, जिसमें सभी बाल नियंत्रण रखे जाते हैं। खिड़कियों में से एक में, मैं दूसरी तस्वीर की सामग्री (वास्तव में केवल मूल उपयोगकर्ता नियंत्रण), चित्र-इन-पिक्चर टीवी की तरह दिखाना चाहता हूं। इस तरह उपयोगकर्ता पहली विंडो देख सकता था, और देख सकता है कि दूसरी विंडो में एक ही समय में क्या हो रहा है। ध्यान दें, कि मैं इस दूसरी विंडो के उपयोगकर्ता नियंत्रण (जो आसान होगा) की दो स्वतंत्र प्रतियां नहीं चाहते हैं, लेकिन पहली विंडो में दूसरी विंडो की सामग्री को दर्पण करने के लिए।क्या मैं एक एक्सएएमएल/डब्ल्यूपीएफ विंडो को दूसरी विंडो में डुप्लिकेट कर सकता हूं, जैसे तस्वीर-इन-पिक्चर टीवी?

यह विंडोज 7 टास्कबार थंबनेल पूर्वावलोकन के समान ही है, इसलिए मुझे लगता है कि यह करने योग्य होना चाहिए। आदर्श रूप में, हालांकि, मैं उस विंडो-इन-ए-विंडो के साथ बातचीत करने में सक्षम होना चाहूंगा, वैसे ही जैसे मैं मूल खिड़की को खींचाना चाहता था।

यह this question के समान है, सिवाय इसके कि मुझे पूरे डेस्कटॉप की बजाय कॉपी करने के लिए एक ही एप्लिकेशन से केवल एक विंडो चाहिए। this question के समान, लेकिन मुझे थोड़ी अधिक हाथ पकड़ने की आवश्यकता है, क्योंकि मैं सी #/डब्ल्यूपीएफ से परिचित नहीं हूं। कुछ कोड स्निपेट बहुत अच्छे होंगे।

अग्रिम धन्यवाद!

+0

आप दूसरी विंडो की सामग्री को "हाइजैक" करने में सक्षम हो सकते हैं और उन्हें अपने "पीआईपी" नियंत्रण में डाल सकते हैं। जब पीआईपी की अब आवश्यकता नहीं है, तो आवश्यक होने पर सामग्री को विंडो पर वापस दोबारा दोहराएं। –

उत्तर

0

एक आयत पर भरने के रूप में एक दृश्य ब्रश का उपयोग करें।

हालांकि आप इसके साथ बातचीत करने में सक्षम नहीं होंगे ... लेकिन इस प्रकार टास्कबार पर पूर्वावलोकन थंबनेल पूरा किए जाते हैं।

<Grid HorizontalAlignment="Left" Name="A" Height="100" Width="100"> 
    <Grid.Background> 
     <SolidColorBrush Opacity="0" Color="White"/> 
    </Grid.Background> 
    <!-- Contents --> 
</Grid> 


<Rectangle Name="RA" VerticalAlignment="Top" Width="100" Height="100" HorizontalAlignment="Left" Stroke="Black"> 
    <Rectangle.Fill> 
     <!-- Creates the reflection. --> 
     <VisualBrush AutoLayoutContent="True" Visual="{Binding ElementName=A}" ViewboxUnits="RelativeToBoundingBox" ViewportUnits="RelativeToBoundingBox" Stretch="Fill" AlignmentX="Left" AlignmentY="Top" Viewport="0,0,1,1" Viewbox="0,0,1,1" TileMode="None"> 
     </VisualBrush> 
    </Rectangle.Fill> 
</Rectangle> 

संवाद के लिए, आप एक समान स्क्रीन पर सभी गुण बाध्य करने के लिए होगा, और एक लेआउट यह छोटा करने के लिए बदलने का उपयोग करें।

<StackPanel> 
    <Grid> 
     <TextBox Name="A"/> 
    </Grid> 
    <Grid> 
     <Grid.LayoutTransform> 
      <ScaleTransform CenterX=".5" CenterY=".5" ScaleX=".25" ScaleY=".25"/> 
     </Grid.LayoutTransform> 
     <TextBox Name="B" Text="{Binding ElementName=A, Path=Text, UpdateSourceTrigger=PropertyChanged}"/> 
    </Grid> 
</StackPanel> 
3

एक दृश्य ब्रश का उपयोग करें। यह इंटरैक्टिव नहीं होगा, लेकिन यह आपकी आवश्यकताओं के अनुरूप लगता है।

कार्रवाई में इसे देखने के लिए इस कोड को Kaxaml में पेस्ट करें।

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Page.Triggers> 
     <EventTrigger RoutedEvent="Page.Loaded"> 
      <EventTrigger.Actions> 
       <BeginStoryboard> 
        <Storyboard Storyboard.TargetName="sampleAnimation" Storyboard.TargetProperty="(FrameworkElement.RenderTransform).(RotateTransform.Angle)"> 
         <DoubleAnimation Duration="00:00:10" RepeatBehavior="Forever" To="-360"> 
          <DoubleAnimation.EasingFunction> 
           <ElasticEase/> 
          </DoubleAnimation.EasingFunction> 
         </DoubleAnimation> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger.Actions> 
     </EventTrigger> 
    </Page.Triggers> 
    <Page.Resources> 
     <VisualBrush x:Key="contentBrush" Stretch="None" Visual="{Binding ElementName=content}"/> 
    </Page.Resources> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
     <TextBlock FontSize="25" Text="Content to mirror:"/> 
     <Grid 
      x:Name="content" 
      Grid.Row="1" 
      Margin="5" 
      Background="#11000000" 
      ClipToBounds="True"> 
      <TextBox 
       x:Name="sampleAnimation" 
       HorizontalAlignment="Center" 
       VerticalAlignment="Center" 
       FontSize="60" 
       FontWeight="Light" 
       Foreground="Red" 
       RenderTransformOrigin="0.5,0.5" 
       Text="Hello!"> 
       <TextBox.RenderTransform> 
        <RotateTransform Angle="0"/> 
       </TextBox.RenderTransform> 
      </TextBox> 
     </Grid> 
     <TextBlock Grid.Row="2" FontSize="25" Text="Mirrored content using VisualBrush:"/> 
     <Grid Grid.Row="3" Background="{StaticResource contentBrush}"> 
     </Grid> 
    </Grid> 
</Page> 
संबंधित मुद्दे