C# ListBox中一项上的不同数据源

C# ListBox中一项上的不同数据源,c#,xaml,windows-phone-8,C#,Xaml,Windows Phone 8,我有一个绑定到数据上下文的列表框,可以正常工作。但在某些项目上,我想显示一个包含来自另一个上下文的数据的文本块。但是我不能让它工作。我让它在cs类中处理字符串,但当我将其更改为实现INotifyPropertyChanged的类时,我根本无法显示文本 这是我的xaml的简化项目模板: <DataTemplate x:Key="ArrivalFlightItemTemplate"> <TextBlock Text="{Binding Arrival

我有一个绑定到数据上下文的列表框,可以正常工作。但在某些项目上,我想显示一个包含来自另一个上下文的数据的文本块。但是我不能让它工作。我让它在cs类中处理字符串,但当我将其更改为实现INotifyPropertyChanged的类时,我根本无法显示文本

这是我的xaml的简化项目模板:

    <DataTemplate x:Key="ArrivalFlightItemTemplate">
            <TextBlock Text="{Binding ArrivalFlightItem.Operator}" />
            <StackPanel Visibility="{Binding Converter={StaticResource FlightDisclaimerConverter}}">
                <TextBlock Text="{Binding DisclaimerText}" Style="{StaticResource NormalText}" Foreground="{StaticResource DarkForegroundColor}">
                    <TextBlock.DataContext>
                        <local:FlightDisclaimerItem/>
                    </TextBlock.DataContext>
                </TextBlock>
            </StackPanel>
    </DataTemplate>

有谁能帮我弄清楚我是Windows Phone新手吗?

为什么要在代码中绑定一些数据?您应该在XAML中完成这一切

将免责声明项定义为ViewModel中的属性。 设置PhoneApplicationPage的名称 使用标记扩展中的PhoneApplicationPage名称将相关文本块绑定到ViewModel属性
我让它工作了!我无法使用DataTemplate中的另一个DataContext使其工作。但是通过绑定到页面免责声明面板中的另一个对象,它可以按预期工作

Text="{Binding ElementName=DisclaimerPanel, Path=DataContext.DisclaimerText}"

您正在将TextBlock的DataContext设置为空的新FlightDisclaimerItem。我想这就是问题所在。它只是没有为其DisclaimerText属性指定值。此外,更多的代码和对预期最终结果的解释可能有助于我们为您提供更好的想法:但是我在disclaimerItem.DisclaimerText=Strings.FlightInfoDisclaimerShort中设置值;这就是我想展示的字符串。还是我遗漏了什么?这样做的目的是在列表的最后一项中显示一些额外的信息。我也有一个按钮,显示更多的文本,可观察的是,我只是取代了一个较长的文本列表很长,所以它没有工作把它放在一个滚动视图与文本块后。因此,我试图将文本包含在所有项目中,但将其隐藏在除最后一项之外的所有项目中。这基本上就是我所建议的。我只是省略了Binding的Path属性,使用了它的默认构造函数,该构造函数接受一个路径参数。
Text="{Binding ElementName=DisclaimerPanel, Path=DataContext.DisclaimerText}"