自定义控件和

时间:2011-03-17 14:23:19

标签: silverlight windows-phone-7

嘿,那里, 我已经为我的应用程序编写了一个自定义控件,所以事情对我来说有点容易,到目前为止它工作得很好,现在我想将一些数据绑定到包装内容但输出说我有一个绑定错误和我的“项目“在”CLIENT.UI.SinglePageControl“而不是”CLIENT.MainPage“中搜索属性....

<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>

2 个答案:

答案 0 :(得分:2)

尝试为控件提供x:Name值,然后在绑定语句中包含ElementName =&lt; x:Name&gt;

<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>

答案 1 :(得分:0)

如果不了解您是如何设置数据上下文等,则很难说清楚,但根据您提供的详细信息判断,您ListBox数据上下文的级别为SinglePageControl.PageContent。通常,父(MainPage)的数据上下文将在可视化树下继承,因此在这种情况下它并不意味着SinglePageControl.PageContent正在设置它自己的数据上下文。如果您不需要它,那么只需删除正在设置它的代码(例如this.DataContext = this;),然后继承数据上下文。

如果您有充分的理由在页面内容上设置数据上下文(看起来非常合理),那么您需要提供一种传递信息的方法,但我们需要了解更多信息什么数据来自哪里,以便提供一个好的解决方案。