Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当页面已经绑定到另一个类时,如何在PhoneApplicationPage.Resources上绑定DataTemplate?_C#_Xaml_Data Binding_Windows Phone 8 - Fatal编程技术网

C# 当页面已经绑定到另一个类时,如何在PhoneApplicationPage.Resources上绑定DataTemplate?

C# 当页面已经绑定到另一个类时,如何在PhoneApplicationPage.Resources上绑定DataTemplate?,c#,xaml,data-binding,windows-phone-8,C#,Xaml,Data Binding,Windows Phone 8,我根据反馈对问题进行了编辑,以包含更多信息 在我的setingspage.xaml中 <toolkit:ListPicker x:Name="lpkCountry" ItemTemplate="{Binding Source={StaticResource lpkItemTemplate}}" FullModeItemTemplate="{Binding Source={StaticResource lpkFullItemTemplate}}" Header="your cou

我根据反馈对问题进行了编辑,以包含更多信息

在我的setingspage.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" />
同样在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(HashCode=-2039466552)上未找到“国家”属性。BindingExpression:Path='Country'DataItem='Afghanistan'(HashCode=-2039466552);目标元素是“System.Windows.Controls.TextBlock”(名称=“”);目标属性为“Text”(类型为“System.String”)


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

一个明显的错误是
RelativeSource={relativesourceself}
。这意味着您尝试绑定到同一个对象,如TextBox或ListPicker。在这种情况下,运行时是绝对正确的:
在“Microsoft.Phone.Controls.ListPicker”上找不到“lpkitemplate”属性。

如果您在App.xaml的
部分的某个地方定义数据模板,我想类似于
Source={StaticResource lpkitemplate}
的东西会有所帮助

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

<TextBox Text={Binding} />


谢谢您的回复。现在的问题是listpicker的文本属性绑定到类的公共属性,该属性是通过代码定义的。i、 e:
。如果我将数据模板放置在App.xaml中,那么正确的使用路径是什么?将数据模板放置在何处并不重要,因为它仅在运行时应用。您应该保持相同的路径,
我询问的原因是因为我得到了所有国家/地区列表的错误,例如
System.Windows.Data错误:BindingExpression路径错误:“在'津巴布韦''System.String'(HashCode=993922277)上找不到country'属性。BindingExpression:Path='Country'DataItem='津巴布韦'(HashCode=993922277);目标元素是“System.Windows.Controls.TextBlock”(名称=“”);目标属性为“Text”(类型为“System.String”)。
您的错误表明系统无法在类型
String
上找到
Country
属性,这其实并不奇怪。看来你的装订安排有问题。如果字符串(“津巴布韦”)是运行时试图在其上搜索属性的对象,则应该能够编写如下绑定表达式:
。试试看它是否有效。一般来说,在没有看到所有代码的情况下修复绑定是很困难的,因此如果您仍然无法实现您想要的,请发布更多的代码。我已经编辑了我的问题。我理解它找不到的东西,这并不奇怪。这就是为什么我要问如何正确地找到它
    public SettingsPage()
    {
        InitializeComponent();
         this.lpkCountry.SelectionChanged += new  SelectionChangedEventHandler(lpkCountry_SelectionChanged);
        this.lpkCountry.ItemsSource = Country;
        settings = new AppSettings();
        this.DataContext = settings;
    }
<TextBox Text={Binding} />