2012-08-08 17 views
5

तो मेरे पास एक लेख प्रदर्शित करने के लिए एक फ्लिप दृश्य है और इस फ्लिप व्यू में मेरे पास Microsoft Player Framework से मीडिया प्लेयर है। अब मैं कोड से इस मीडिया प्लेयर तक पहुंचने में सक्षम होना चाहता हूं।WinRT XAML FlipView आइटम टेम्पलेट के अंदर नियंत्रण पाएं

हालांकि, मैंने पाया है कि हर एक उदाहरण ने डेटा टेम्पलेट पर FindName का उपयोग किया है जो WinRT को नहीं देखा गया है।

मैं

var flipViewItem = this.flipView.ItemContainerGenerator.ContainerFromIndex(flipView.SelectedIndex); 

की कोशिश की है और उसके बाद VisualTreeHelper का उपयोग कर मीडिया प्लेयर को खोजने के लिए, लेकिन flipViewItem हमेशा रिक्त है।

मैंने वीडियो प्लेयर को बाध्यकारी डेटा की कोशिश की - लेकिन यह फ्लिप व्यू आइटम्स में सभी वीडियो एक साथ खेलने का कारण बनता है।

क्या कोई मदद कर सकता है?

<FlipView 
     x:Name="flipView" 
     AutomationProperties.AutomationId="ItemsFlipView" 
     AutomationProperties.Name="Item Details" 
     TabIndex="1" 
     Margin="0,127,0,10" 
     ItemsSource="{Binding Source={StaticResource itemsViewSource}}" Grid.RowSpan="2"> 

     <FlipView.ItemTemplate> 
      <DataTemplate> 
       <UserControl Loaded="StartLayoutUpdates" Unloaded="StopLayoutUpdates"> 
        <ScrollViewer x:Name="scrollViewer" Style="{StaticResource HorizontalScrollViewerStyle}" Grid.Row="1"> 

         <common:RichTextColumns x:Name="richTextColumns" Margin="117,0,117,47"> 
          <RichTextBlock x:Name="richTextBlock" Width="560" Style="{StaticResource ItemRichTextStyle}"> 
           <Paragraph> 
            <Run FontSize="26.667" FontWeight="Light" Text="{Binding Title}"/> 
           </Paragraph> 
           <Paragraph LineStackingStrategy="MaxHeight"> 
            <InlineUIContainer> 
             <Grid Width="560" Height="340" Margin="0,20,0,10"> 
              <Grid.Background> 
               <ImageBrush ImageSource="{Binding Image}" Stretch="UniformToFill" /> 
              </Grid.Background> 
              <Image x:Name="OverlayImage" Visibility="{Binding ShowVideo, Converter={StaticResource booleanToVisibilityConverter}}" Source="Assets/play-icon.png"/> 
              <mmppf:MediaPlayer x:Name="ArticleVideo" Width="560" Height="340" /> 
             </Grid> 
            </InlineUIContainer> 

मैं कोशिश की है मीडिया प्लेयर के लिए बाध्य:

<mmppf:MediaPlayer x:Name="ArticleVideo" Source="{Binding VideoPath}" Width="560" Height="340" PosterSource="{Binding Image}" AutoPlay="False" /> 

हालांकि, जब मैं ऐसा

संपादित

तो यह मेरी XAML है कि मैं का उपयोग कर रहा है और वीडियो को ऑटोप्ले पर सेट करें - वे सभी ऑटोप्ले हैं। यदि मैं मैन्युअल रूप से नियंत्रण पर खेलता हूं, तो मुझे System.ComponentModel.PropertyChangedEventHandler.Invoke पर एक शून्य संदर्भ अपवाद प्राप्त होता है। मीडिया प्लेयर टेम्पलेट के बाहर ठीक काम करता है।

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

+0

क्या आपने इसे संसाधन बनाने और फिर 'FrameworkElement.FindResource' का उपयोग करने का प्रयास किया है? – mydogisbox

+0

यदि मैं मीडियाप्लेयर को '<पेज। स्रोतों' में ले जाता हूं, तो मैं इसे अपने पृष्ठ पर सही स्थिति में कैसे रखूं? – Terry

+0

आह, क्षमा करें। मैंने गलत समझा कि घटक क्या था। – mydogisbox

उत्तर

2

http://winrtxamltoolkit.codeplex.com/downloads/get/467926 देखें और VisualTreeHelperExtensions देखें।

दृश्य पेड़ में तत्व खोजने के लिए कोई सीधी विधि नहीं है। आपको VisualTreeHelper.GetChild (flipView, i) विधि का उपयोग करने की आवश्यकता है। कार्यान्वित करना मुश्किल नहीं है, लेकिन टूलकिट में एक एकल एक्सटेंशन विधि वर्ग फ़ाइल है जिसे आप सीधे अपनी परियोजना में जोड़ सकते हैं। यह वंश के आधार पर वंशजों या पूर्वजों को पाने का एक तरीका प्रदान करता है। मुझे लगता है कि आप जो भी खोज रहे हैं उसके लिए बिल फिट होगा।

+1

यदि आप वंश के प्रकार को प्राप्त करते हैं, तो यह मीडियाप्लेयर के सभी उदाहरण वापस कर देगा। फिर आप कैसे जानते हैं कि वर्तमान फ्लिप व्यू व्यू में कौन सा है? – xster

+0

फ़्लिप व्यू में "वर्तमान में सक्रिय आइटम" संपत्ति होनी चाहिए, जिसे आप VisualHelper पर भेज सकते हैं। FindChild

संबंधित मुद्दे