0

嗨,我想绑定 DataTemplate 内的 textBlock 的值,TextBlock 的 text 属性将根据文件/文件夹列表更改运行时。我写了下面的代码,但字符串为空。我的工作环境是带有 Visual Studio 2012 的 Windows Phone 8。

<Grid x:Name="ContentPanel">
<phone:LongListSelector>    
    <phone:LongListSelector.ListFooterTemplate >
        <DataTemplate >
            <TextBlock  Name="tbfooter" Text="{Binding FooterText, Mode=OneWay}" />
        </DataTemplate>
    </phone:LongListSelector.ListFooterTemplate>
</phone:LongListSelector>  

此 textBlock name= tbfooter 必须使用 Footertext 值更新运行时。

现在在我后面的代码中,我已经定义了这个属性,比如

private int _footerText;
public int FooterText
{
   get
   {
      return this._footerText;
   }
   set
   {
      this._footerText=value
      NotifyPropertyChanged("FooterText");
   }
}

但是 textBlock tbfooter 的值为 null,它没有显示任何内容,它只是 null。有人可以帮帮我吗?

编辑:我在这里再次更新了 XAML 代码。我在这里不关注 MVVM,它是简单的 windows phone 应用程序。任何帮助表示赞赏。

4

4 回答 4

0

看起来在您的属性设置器中,您需要在通知其更改之前设置值,请尝试这样的事情

private int _footerText;
public int FooterText
{
   get
   {
      return this._footerText;
   }
   set
   {  
      this._footerText = value;
      NotifyPropertyChanged("FooterText");
   }
}
于 2013-04-25T09:07:42.707 回答
0

使用的时候DataTemplateDataContext当前DataTemplate选中的Item。如果要将 a 绑定LongListSelector到类型 T 的列表,则可以通过绑定此类型 T 来访问属性。

您想绑定到不是当前 DataContext 的 Viewmodel 的属性。因此,您的结果为空。

试试这个代码

<Grid x:Name="ContentPanel">
<phone:LongListSelector>    
    <phone:LongListSelector.ListFooterTemplate >
        <DataTemplate >
            <TextBlock Name="tbfooter"
                    DataContext="{Binding Path=DataContext,RelativeSource={RelativeSource AncestorType=UserControl}}"
                    Text="{Binding FooterText, Mode=OneWay}" />
        </DataTemplate>
    </phone:LongListSelector.ListFooterTemplate>
</phone:LongListSelector> 
于 2013-04-25T13:14:29.147 回答
0

正如 inxs 所提到的,你TextBlock是空的,因为它没有绑定到正确的属性。看看这个答案,它说明了如何绑定到DataContext代码隐藏中的属性和属性。

于 2013-05-02T13:06:01.950 回答
0
private int _footerText;
public int FooterText
{
   get
   {
      return this._footerText;
   }
   set
   {
      this._footerText=value;  //  <<-----------You might miss this!
      NotifyPropertyChanged("FooterText");
   }
}
于 2013-04-25T09:05:00.067 回答