2011-03-17 5 views
0

hey là, J'ai écrit un contrôle personnalisé pour mon application afin que les choses deviennent un peu plus facile pour moi, et jusqu'à présent cela a bien fonctionné, maintenant je voulais lier certaines données au contenu enveloppé, mais la sortie dit que j'ai une erreur de lien et mon « Articles » la propriété est à cherchai « CLIENT.UI.SinglePageControl » au lieu de « CLIENT.MainPage » ....contrôles personnalisés et

<phone:PhoneApplicationPage 
x:Class="CLIENT.MainPage" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:ui="clr-namespace:CLIENT.UI" 

mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768" 
FontFamily="{StaticResource PhoneFontFamilyNormal}" 
FontSize="{StaticResource PhoneFontSizeNormal}" 
Foreground="{StaticResource PhoneForegroundBrush}" 
SupportedOrientations="PortraitOrLandscape" Orientation="Portrait" 
shell:SystemTray.IsVisible="True"> 
<Grid> 
    <ui:SinglePageControl HeaderTitle="Connections"> 
     <ui:SinglePageControl.PageContent> 

      <ListBox x:Name="MainListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}" Background="Blue" SelectionChanged="MainListBox_SelectionChanged"> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <StackPanel Margin="0,0,0,17" Width="432" Orientation="Horizontal"> 
          <Image Source="UI/PICS/list_connection.png"/> 
          <TextBlock Text="{Binding ItemText}" TextWrapping="Wrap" Foreground="Black"/> 

         </StackPanel> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 

     </ui:SinglePageControl.PageContent> 
    </ui:SinglePageControl> 

</Grid> 

Répondre

2

Essayez de donner votre contrôle un x : Nom de la valeur, puis dans votre instruction de liaison inclure ElementName = < x: Nom >

<phone:PhoneApplicationPage 
    x:Name="pa" 
    x:Class="CLIENT.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:ui="clr-namespace:CLIENT.UI" 
    mc:Ignorable="d" 
    d:DesignWidth="480" 
    d:DesignHeight="768" 
    FontFamily="{StaticResource PhoneFontFamilyNormal}" 
    FontSize="{StaticResource PhoneFontSizeNormal}" 
    Foreground="{StaticResource PhoneForegroundBrush}" 
    SupportedOrientations="PortraitOrLandscape" 
    Orientation="Portrait" shell:SystemTray.IsVisible="True"> 
    <Grid> 
     <ui:SinglePageControl HeaderTitle="Connections"> 
      <ui:SinglePageControl.PageContent> 
       <ListBox x:Name="MainListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items, ElementName=pa}" Background="Blue" SelectionChanged="MainListBox_SelectionChanged"> 
        <ListBox.ItemTemplate>     
         <DataTemplate> 
          <StackPanel Margin="0,0,0,17" Width="432" Orientation="Horizontal"> 
           <Image Source="UI/PICS/list_connection.png"/> <TextBlock Text="{Binding ItemText, ElementName=pa}" TextWrapping="Wrap" Foreground="Black"/> 
          </StackPanel>      </DataTemplate> 
        </ListBox.ItemTemplate> 
       </ListBox> 
       </ui:SinglePageControl.PageContent> 
     </ui:SinglePageControl> 
    </Grid>
0

Sans voir comment vous définissez des contextes de données, etc., il est difficile de dire, mais à en juger par les détails que vous avez donné, au niveau de votre ListBox votre contexte de données est le SinglePageControl.PageContent. Habituellement, le contexte de données du parent (le MainPage) serait hérité dans l'arbre visuel, donc le fait que ce n'est pas dans ce cas implique que SinglePageControl.PageContent est en train de définir son propre contexte de données. Si vous n'en avez pas besoin, supprimez simplement le code (this.DataContext = this; par exemple) qui le définit et le contexte de données sera alors hérité.

Si vous avez de bonnes raisons de définir un contexte de données au niveau du contenu de la page (ce qui semble parfaitement raisonnable), vous devrez fournir un moyen de transmettre cette information, mais nous devrons en savoir plus. à propos de quelles données vient où, afin de donner une bonne solution.

Questions connexes