0

我已经根据反馈编辑了问题以包含更多信息。

在我的 SettingsPage.xaml 我有

   <toolkit:ListPicker x:Name="lpkCountry" 
ItemTemplate="{Binding Source={StaticResource lpkItemTemplate}}" 
FullModeItemTemplate="{Binding Source={StaticResource lpkFullItemTemplate}}" 
Header="your country" CacheMode="BitmapCache" 
HorizontalAlignment="Left" VerticalAlignment="Top" Width="280" Height="82" />

我正在尝试将 ListPicker DataTemplate 绑定到放置在 App.xaml 页面中的以下 XAML

<Application.Resources>
    <DataTemplate x:Name="lpkItemTemplate">
        <TextBlock Text="{Binding Country}" />
    </DataTemplate>
    <DataTemplate x:Name="lpkFullItemTemplate">
        <TextBlock Margin="16 0 0 0" Text="{Binding Country}" />
    </DataTemplate>
 </Application.Resources>

SettingsPage.xaml.cs 将 Country 定义为公共静态字符串数组:

namespace myspace
{
    public partial class SettingsPage : PhoneApplicationPage
    {
        public static String[] Country = {
                            "Afghanistan",
                            "Åland Islands",
                            "Albania",
                            "Algeria",
                            "American Samoa",
                            "Andorra",
                            "Angola"}
                            ......;

同样在 SettingsPage.xaml.cs 上,我已将 datacontext 定义为另一个对象。

    public SettingsPage()
    {
        InitializeComponent();
         this.lpkCountry.SelectionChanged += new  SelectionChangedEventHandler(lpkCountry_SelectionChanged);
        this.lpkCountry.ItemsSource = Country;
        settings = new AppSettings();
        this.DataContext = settings;
    }

但是在运行时,当我转到 SettingsPage 时,我会遇到很多此类错误

System.Windows.Data 错误:BindingExpression 路径错误:在“阿富汗”“System.String”上找不到“Country”属性(HashCode=-2039466552)。BindingExpression: Path='Country' DataItem='Afghanistan' (HashCode=-2039466552); 目标元素是'System.Windows.Controls.TextBlock'(名称='');目标属性是“文本”(类型“System.String”)..

我知道目标元素和目标属性之间存在冲突,那么如何解决这个问题?

4

1 回答 1

1

一个明显的错误是RelativeSource={RelativeSource Self}。这意味着您尝试绑定到同一个对象,例如 TextBox 或 ListPicker。在这种情况下,运行时是绝对正确的:'lpkItemTemplate' property not found on 'Microsoft.Phone.Controls.ListPicker'

Source={StaticResource lpkItemTemplate}如果您在 App.xaml 中的某处定义数据模板,我想类似的东西会有所帮助<Application.Resources>

编辑:添加更多代码后。您的项目源是一个字符串数组,因此在数据模板中您应该使用以下绑定:

<TextBox Text={Binding} />
于 2013-02-07T13:52:08.913 回答