Windows Phone应用程序文本框绑定don';不起作用

本文关键字:不起作用 don 绑定 Phone 应用程序 文本 Windows | 更新日期: 2023-09-27 18:20:30

我正在开发我的第一个Windows Phone 7应用程序,遇到了绑定文本框不起作用的问题,我真的不知道为什么。其他绑定效果很好。

如果日期已更改,则文本框中的文本也应更改。

Xaml:

<TextBlock x:Name="ZodiacText" Text="{Binding Path=ZodiacString, Mode=OneWay}" FontSize="20" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Center"  VerticalAlignment="Center" Foreground="White" />

以及背后的代码:

public DateTime Date
{
    get { return date; }
    set
    {
        if (value != this.date)
        {
            this.date = value;
            setActualDate(this.date);
            update();
            if (this.PropertyChanged != null)
            {
                this.PropertyChanged(this,
                new PropertyChangedEventArgs("NewDate"));
            }
        }
    }
}
public void update()
{
    zodiac = MoonCalculus.getZodiac();
   ...
    ZodiacString = zodiac;
}
public String ZodiacString
{
    get { return zodiacString; }
    set
    {
        if (zodiacString != value)
        {
            zodiacString = AppResources.ResourceManager.GetString(value);
        }
    }
}

Windows Phone应用程序文本框绑定don';不起作用

  1. 设置ZodiacString时未引发PropertyChanged
  2. 您有Mode=OneWay,这是默认值。您需要Mode=TwoWay

试着去掉update(),去掉ZodiacString的setter。

两个原因-不需要,以及在getter中,完成更新工作。这也比您当前的实现要好——用作AppResources.ResourceManager.GetString(value);参数的值是"代码气味",因为它没有表明它的真实意图。(用作参数,而不是将ZodiacString设置为其值)

public DateTime Date
{
    get { return date; }
    set
    {
        if (value != this.date)
        {
            this.date = value;
            setActualDate(this.date);
RaisePropertyChanged("Date");
RaisePropertyChanged("NewDate");
RaisePropertyChanged("ZodiacString");
        }
    }
}

private void RaisePropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
            {
                this.PropertyChanged(this,
                new PropertyChangedEventArgs(propertyName));
            }
}
public String ZodiacString
{
    get { 
zodiac = MoonCalculus.getZodiac();
   ...
return zodiac; }
}