2013-05-27 207 views
0

我需要你的建議,請:) :)如何獲取當前綁定到文本框的值?

我有一個文本框內的一個FlipView綁定到標題屬性,它顯示了一個頁面的當前標題。

<TextBlock x:Name="jmeno" FontSize="26.667" FontWeight="Light" Text="{Binding Title}" TextWrapping="Wrap" /> 

而且我有一個顯示視頻的媒體元素。

<MediaElement x:Name="mmedia" Source="Video/prvniVideo.mp4" Height="300" Grid.Row="1" KeyUp="mmedia_KeyUp" /> 

我想在不同的頁面打開不同的視頻,我試圖完成它像這樣 - 閱讀是決定texblock和基地的實際顯示值,視頻媒體元素打開。

就是這樣。

 string AktualniStranka; 
     AktualniStranka = jmeno.Text; 

     if (AktualniStranka == "Exercise 1") 
     { 
      mmedia.Source = new Uri("ms-appx:/Video/prvniVideo.mp4", UriKind.RelativeOrAbsolute); 
      mmedia.Play(); 
     } 
     else 
     { 
      mmedia.Source = new Uri("ms-appx:/Video/Gumm.mp4", UriKind.RelativeOrAbsolute); 
      mmedia.Play(); 
     } 

但它不工作 - 我試圖閱讀文本塊的只是文本,並把它放在另一個文本塊,它不工作要麼,我花了幾乎一整天時間,使其工作。請幫傢伙:)

全XAML代碼:

<common:LayoutAwarePage 
x:Name="pageRoot" 
x:Class="ContosoCookbook.ItemDetailPage" 
DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:ContosoCookbook" 
xmlns:data="using:ContosoCookbook.Data" 
xmlns:common="using:ContosoCookbook.Common" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d"> 

<Page.Resources> 

    <!-- Collection of items displayed by this page --> 
    <Style x:Name="transportStyle" TargetType="Button"> 
     <Setter Property="Height" Value="40" /> 
     <Setter Property="Width" Value="75" /> 
     <Setter Property="FontSize" Value="11" /> 
    </Style> 

    <CollectionViewSource 
     x:Name="itemsViewSource" 
     Source="{Binding Items}" 
     d:Source="{Binding AllGroups[0].Items, Source={d:DesignInstance Type=data:SampleDataSource, IsDesignTimeCreatable=True}}"/> 

    <common:ListConverter x:Key="ListConverter" /> 

    <Style x:Key="BragAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> 
     <Setter Property="AutomationProperties.AutomationId" Value="BragAppBarButton"/> 
     <Setter Property="AutomationProperties.Name" Value="Brag"/> 
     <Setter Property="Content" Value="&#xE170;"/> 
    </Style> 

    <Style x:Key="ReminderAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}"> 
     <Setter Property="AutomationProperties.AutomationId" Value="ReminderAppBarButton"/> 
     <Setter Property="AutomationProperties.Name" Value="Reminder"/> 
     <Setter Property="Content" Value="&#xE121;"/> 
    </Style> 

    <local:ProductLicenseDataSource x:Key="License" /> 
    <common:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/> 

</Page.Resources> 

<Page.BottomAppBar> 
    <AppBar x:Name="PageAppBar" Padding="10,0,10,0"> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="50*"/> 
       <ColumnDefinition Width="50*"/> 
      </Grid.ColumnDefinitions> 
      <StackPanel x:Name="LeftCommands" Orientation="Horizontal" Grid.Column="0" HorizontalAlignment="Left"> 
       <Button x:Name="BragButton" HorizontalAlignment="Left" Style="{StaticResource BragAppBarButtonStyle}" Click="OnBragButtonClicked" /> 
       <Button x:Name="PinRecipeButton" HorizontalAlignment="Left" Style="{StaticResource PinAppBarButtonStyle}" Click="OnPinRecipeButtonClicked" /> 
       <Button x:Name="ReminderButton" HorizontalAlignment="Left" Style="{StaticResource ReminderAppBarButtonStyle}" Click="OnReminderButtonClicked" /> 
      </StackPanel> 
      <StackPanel x:Name="RightCommands" Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Right"> 
      </StackPanel> 
     </Grid> 
    </AppBar> 
</Page.BottomAppBar> 


<!-- 
    This grid acts as a root panel for the page that defines two rows: 
    * Row 0 contains the back button and page title 
    * Row 1 contains the rest of the page layout 
--> 
<Grid 
    Style="{StaticResource LayoutRootStyle}" 
    DataContext="{Binding Group}" 
    d:DataContext="{Binding AllGroups[0], Source={d:DesignInstance Type=data:SampleDataSource, IsDesignTimeCreatable=True}}"> 

    <Grid.RowDefinitions> 
     <RowDefinition Height="140"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 


    <!-- 
     The remainder of the page is one large FlipView that displays details for 
     one item at a time, allowing the user to flip through all items in the chosen 
     group 
    --> 


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

     <FlipView.ItemContainerStyle> 
      <Style TargetType="FlipViewItem"> 
       <Setter Property="Margin" Value="0,137,0,0"/> 
      </Style> 
     </FlipView.ItemContainerStyle> 

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

         <!-- Three-column grid for item-detail layout --> 
         <Grid Margin="120,0,20,20"> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="600" /> 
           <ColumnDefinition Width="40" /> 
           <ColumnDefinition /> 
          </Grid.ColumnDefinitions> 

          <StackPanel Orientation="Vertical" Grid.Column="0"> 
           <TextBlock x:Name="jmeno" FontSize="26.667" FontWeight="Light" Text="{Binding Title}" TextWrapping="Wrap" /> 





          </StackPanel> 

          <StackPanel Orientation="Vertical" Grid.Column="4"> 
           <TextBlock FontSize="26.667" FontWeight="Light" Text="Description" Margin="0,0,0,16"/> 




           <TextBlock FontSize="26.667" FontWeight="Light" Text="{Binding ShortDesctiption}" TextWrapping="Wrap"/> 
           <ScrollViewer Style="{StaticResource VerticalScrollViewerStyle}"> 
            <Grid> 
             <TextBlock FontSize="20" FontWeight="Light" Text="{Binding Directions}" TextWrapping="Wrap" Visibility="{Binding IsLicensed, Source={StaticResource License}, Converter={StaticResource BooleanToVisibilityConverter }}" /> 
             <Button Width="225" Height="120" Background="#30ffffff" Click="OnPurchaseProduct" Visibility="{Binding IsTrial, Source={StaticResource License}, Converter={StaticResource BooleanToVisibilityConverter }}"> 
              <Button.Content> 
               <TextBlock Text="{Binding FormattedPrice, Source={StaticResource License}}" TextWrapping="Wrap" TextAlignment="Center" /> 
              </Button.Content> 
             </Button> 
            </Grid> 
           </ScrollViewer> 
          </StackPanel> 
         </Grid> 

         <VisualStateManager.VisualStateGroups> 
          <!-- Visual states reflect the app's view state inside the FlipView --> 
          <VisualStateGroup x:Name="ApplicationViewStates"> 
           <VisualState x:Name="FullScreenLandscape"/> 
           <VisualState x:Name="Filled"/> 

           <!-- Respect the narrower 100-pixel margin convention for portrait --> 
           <VisualState x:Name="FullScreenPortrait"> 
            <Storyboard> 
             <ObjectAnimationUsingKeyFrames Storyboard.TargetName="image" Storyboard.TargetProperty="MaxHeight"> 
              <DiscreteObjectKeyFrame KeyTime="0" Value="400"/> 
             </ObjectAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 

           <!-- When snapped, the content is reformatted and scrolls vertically --> 
           <VisualState x:Name="Snapped"> 
            <Storyboard> 
             <ObjectAnimationUsingKeyFrames Storyboard.TargetName="scrollViewer" Storyboard.TargetProperty="Style"> 
              <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource VerticalScrollViewerStyle}"/> 
             </ObjectAnimationUsingKeyFrames> 
             <ObjectAnimationUsingKeyFrames Storyboard.TargetName="image" Storyboard.TargetProperty="MaxHeight"> 
              <DiscreteObjectKeyFrame KeyTime="0" Value="160"/> 
             </ObjectAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
          </VisualStateGroup> 
         </VisualStateManager.VisualStateGroups> 
        </ScrollViewer> 
       </UserControl> 
      </DataTemplate> 

     </FlipView.ItemTemplate> 
    </FlipView> 
    <!-- MEDIA PANEL--> 

    <StackPanel Orientation="Vertical" Grid.Row="1" > 
     <Border BorderThickness="5" BorderBrush="White" Background="Black" HorizontalAlignment="Left" Margin="165,50,0,0" VerticalAlignment="Top"> 
      <ContentControl x:Name="VideoContainer" Height="300" KeyUp="VideoContainer_KeyUp"  > 

       <MediaElement x:Name="mmedia" Source="Video/prvniVideo.mp4" Height="300" Grid.Row="1" KeyUp="mmedia_KeyUp" /> 
      </ContentControl> 
     </Border> 

     <StackPanel Orientation="Horizontal" Margin="140,20,0,0"> 
      <Button Name="btnPlay" Click="btnPlay_Click" 
     Style="{StaticResource transportStyle}" Content="Play" /> 
      <Button Name="btnPause" Click="btnPause_Click" 
     Style="{StaticResource transportStyle}" Content="Pause" /> 
      <Button Name="btnStop" Click="btnStop_Click" 
     Style="{StaticResource transportStyle}" Content="Stop" /> 
      <Button Name="btnReverse" Click="btnReverse_Click" 
     Style="{StaticResource transportStyle}" Content="Rewind" /> 
      <Button Name="btnForward" Click="btnForward_Click" 
     Style="{StaticResource transportStyle}" Content="Forward" /> 
      <Button Name="btnVolumeUp" Click="btnVolumeUp_Click" 
     Style="{StaticResource transportStyle}" Content="-" /> 
      <Button Name="btnVolumeDown" Click="btnVolumeDown_Click" 
     Style="{StaticResource transportStyle}" Content="+" /> 
      <Button Name="btnMute" Click="btnMute_Click" 
     Style="{StaticResource transportStyle}" Content="Mute" /> 
     </StackPanel> 
     <Button x:Name="btnFullScreenToggle" Click="btnFullScreenToggle_Click" 
     Style="{StaticResource transportStyle}" Content="Full Screen ON" Margin="290,0,0,0" Width="302" /> 

     <TextBlock x:Name="poser" FontSize="26.667" FontWeight="Light" Text="poser" TextWrapping="Wrap" /> 


    </StackPanel> 


    <!-- FlipView used in portrait mode --> 
    <FlipView 
     x:Name="portraitFlipView" 
     AutomationProperties.AutomationId="ItemsFlipView" 
     AutomationProperties.Name="Item Details" 
     Grid.Row="1" 
     Margin="0,-3,20,0" 
     ItemsSource="{Binding Source={StaticResource itemsViewSource}}" 
     Visibility="Collapsed"> 

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

         <!-- Vertical StackPanel for item-detail layout --> 
         <StackPanel Orientation="Vertical" Margin="100,0,20,0"> 
          <StackPanel Orientation="Vertical"> 
           <TextBlock FontSize="26.667" FontWeight="Light" Text="{Binding Title}" TextWrapping="Wrap"/> 
           <Image x:Name="image" Width="400" Margin="0,20,0,40" Stretch="Uniform" Source="{Binding Image}" HorizontalAlignment="Left"/> 
          </StackPanel> 

          <StackPanel Orientation="Vertical"> 
           <TextBlock FontSize="26.667" FontWeight="Light" Text="Ingredients" Margin="0,0,0,16"/> 
           <TextBlock FontSize="20" FontWeight="Light" LineHeight="32.5" Text="{Binding Ingredients, Converter={StaticResource ListConverter}}" TextWrapping="Wrap" /> 
          </StackPanel> 

          <StackPanel Orientation="Vertical"> 
           <TextBlock FontSize="26.667" FontWeight="Light" Text="Directions" Margin="0,24,0,16"/> 
           <ScrollViewer Style="{StaticResource VerticalScrollViewerStyle}"> 
            <Grid> 
             <TextBlock FontSize="20" FontWeight="Light" Text="{Binding Directions}" TextWrapping="Wrap" Visibility="{Binding IsLicensed, Source={StaticResource License}, Converter={StaticResource BooleanToVisibilityConverter }}" /> 
             <Button Width="225" Height="120" Background="#30ffffff" Click="OnPurchaseProduct" Visibility="{Binding IsTrial, Source={StaticResource License}, Converter={StaticResource BooleanToVisibilityConverter }}"> 
              <Button.Content> 
               <TextBlock Text="{Binding FormattedPrice, Source={StaticResource License}}" TextWrapping="Wrap" TextAlignment="Center" /> 
              </Button.Content> 
             </Button> 

            </Grid> 
           </ScrollViewer> 
          </StackPanel> 
         </StackPanel> 
        </ScrollViewer> 
       </UserControl> 
      </DataTemplate> 
     </FlipView.ItemTemplate> 
    </FlipView> 

    <FlipView 
     x:Name="snappedFlipView" 
     AutomationProperties.AutomationId="ItemsFlipView" 
     AutomationProperties.Name="Item Details" 
     Grid.Row="1" 
     Margin="0,-3,0,0" 
     ItemsSource="{Binding Source={StaticResource itemsViewSource}}" 
     Visibility="Collapsed"> 

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

         <!-- Vertical StackPanel for item-detail layout --> 
         <StackPanel Orientation="Vertical" Margin="20,0,20,0"> 
          <StackPanel Orientation="Vertical"> 
           <TextBlock FontSize="20" FontWeight="Light" Text="{Binding Title}" TextWrapping="Wrap"/> 
           <Image x:Name="image" Width="260" Margin="0,12,0,40" Stretch="Uniform" Source="{Binding Image}" HorizontalAlignment="Left"/> 
          </StackPanel> 
          <StackPanel Orientation="Vertical"> 
           <TextBlock FontSize="20" FontWeight="Light" Text="Ingredients" Margin="0,0,0,16"/> 
           <TextBlock FontSize="16" FontWeight="Light" TextWrapping="Wrap" Text="{Binding Ingredients, Converter={StaticResource ListConverter}}" /> 
          </StackPanel> 
         </StackPanel> 
        </ScrollViewer> 
       </UserControl> 
      </DataTemplate> 
     </FlipView.ItemTemplate> 
    </FlipView> 

    <!-- Back button and page title --> 
    <Grid HorizontalAlignment="Left" > 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 
     <Button x:Name="backButton" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/> 
     <TextBlock x:Name="pageTitle" Text="{Binding Title}" Style="{StaticResource PageHeaderTextStyle}" Grid.Column="1" IsHitTestVisible="false"/> 
     <Button Name="btnFullScreenOff" Click="btnFullScreenToggle_Click" 
     Style="{StaticResource transportStyle}" Content="Full Screen OFF" HorizontalAlignment="Right" Grid.Column="1" Margin="0,56,495,36" RenderTransformOrigin="-9.161,0.266" Height="48" Width="106" Visibility="Collapsed" /> 
    </Grid> 

    <VisualStateManager.VisualStateGroups> 

     <!-- Visual states reflect the application's view state --> 
     <VisualStateGroup x:Name="ApplicationViewStates"> 
      <VisualState x:Name="FullScreenLandscape"/> 
      <VisualState x:Name="Filled"/> 

      <!-- The back button respects the narrower 100-pixel margin convention for portrait --> 
      <VisualState x:Name="FullScreenPortrait"> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="backButton" Storyboard.TargetProperty="Style"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PortraitBackButtonStyle}"/> 
        </ObjectAnimationUsingKeyFrames> 

        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="flipView" Storyboard.TargetProperty="Visibility"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/> 
        </ObjectAnimationUsingKeyFrames> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="portraitFlipView" Storyboard.TargetProperty="Visibility"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/> 
        </ObjectAnimationUsingKeyFrames> 

       </Storyboard> 
      </VisualState> 

      <!-- The back button and title have different styles when snapped --> 
      <VisualState x:Name="Snapped"> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="backButton" Storyboard.TargetProperty="Style"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource SnappedBackButtonStyle}"/> 
        </ObjectAnimationUsingKeyFrames> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="pageTitle" Storyboard.TargetProperty="Style"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource SnappedPageHeaderTextStyle}"/> 
        </ObjectAnimationUsingKeyFrames> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="flipView" Storyboard.TargetProperty="Visibility"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/> 
        </ObjectAnimationUsingKeyFrames> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="snappedFlipView" Storyboard.TargetProperty="Visibility"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/> 
        </ObjectAnimationUsingKeyFrames> 

       </Storyboard> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 
</Grid> 

完整的C#代碼:

+0

對錯別字的抱歉,我只是累了,所以只是說對不起.. – Bohuslav

+0

什麼時候以及如何嘗試讀取Text屬性的上下文將是解決您的問題(例如事件處理程序)所必需的。如果您解釋了您在工作失敗時所觀察到的內容,也很有用。調試器告訴你什麼,事件處理程序被擊中等)。這裏沒有足夠的信息。 –

+0

正確的,我們需要確定綁定是否是問題,或者它可能是其他問題。檢查你的輸出並告訴我們用調試器看到什麼值。 Thks – Ouarzy

回答

0

我所看到的是你試圖從你的Textblock(jmeno)的名字得到顯示的值,對不對?

你不應該那樣做。您的文本塊是在數據模板中定義的,爲其分配名稱的唯一原因是應用故事板。

你應該做的是讓你的Flipview的SelectedItem對象(這是你的可視化元素datacontext),並獲得該數據對象的Title屬性。

這樣:

(flipView.SelectedItem爲-WhateverYourTypeIs - )標題,並有你應該有你的價值。

+0

這正是我想要做的:)和基地od值顯示適當的視頻,我相信代碼運行良好:) 我要去嘗試你的解決方案,謝謝你提前。 – Bohuslav

+0

我不知道如果我的解決方案正確,請幫助我。 爲了測試的目的,我創建了一個文本塊,我正在修整以獲取當前的「jmeno」文本框的值 中的代碼 – Bohuslav

+0

後面我用這個功能(是你的意思?) 私人的DependencyObject FindChildControl (DependencyObject的控制,串ctrlName) { int childNumber = VisualTreeHelper.GetChildrenCount(control); (int i = 0; i (兒童,ctrlName); if(nextLevel!= null) return nextLevel; } } return null; } – Bohuslav