如何使用标签内容的DynamicResource

本文关键字:DynamicResource 何使用 标签 | 更新日期: 2023-09-27 17:50:45

我尝试用"DynamicResource"开发一个WPF应用程序,所以我在XAML文件中有这样的标签:

   <Window.Resources>
        <local:BindingClass x:Key="myDataSource"/>
        <local:UtilityGioco x:Key="myUtilityGame"  />
    </Window.Resources>
   <Label x:Name="labelTempo" DataContext="{DynamicResource myUtilityGame}" Content="{Binding Path=tempoEsecuzioneEsercizio}" FontFamily="Arial" FontSize="21" 
                           Foreground="Gray" Grid.Column="0" Grid.Row="1" FontWeight="Bold"
                           Margin="15,40,0,0"/>

在UtilityGioco类中,我有以下代码:

public string tempoEsecuzioneEsercizio
{
    set;
    get;
}
private void displayTimer(object sender, EventArgs e)
{
    try
    {
        // code goes here
        //Console.WriteLine(DateTime.Now.Hour.ToString() + ":"); 
        if (timeSecond == 59)
        {
            timeSecond = 0;
            timeMinutes++;
        }
        //se il contatore dei minuti è maggiore di 0, devo mostrare una scritta altrimenti un altra
        if (timeMinutes > 0)
        {
            tempoEsecuzioneEsercizio = timeMinutes + " min " + ++timeSecond + " sec";
        }
        else
        {
            tempoEsecuzioneEsercizio = ++timeSecond + " sec";
        }
    }
    catch (Exception ex)
    {
        log.Error("MainWindow metodo: displayTimer ", ex);
    }
}

每次调用displayTimer方法,但Label的内容为空

你能帮我吗?

如何使用标签内容的DynamicResource

在你的UtilityGioco类中实现INotifyPropertyChanged接口,并通知tempoEsecuzioneEsercizio属性设置器的变化

的例子:

private string _tempoEsecuzioneEsercizio;
public string tempoEsecuzioneEsercizio
{
    set 
    {
      _tempoEsecuzioneEsercizio = value;
      if (PropertyChanged != null)
      {
        PropertyChanged(this, new PropertyChangedEventArgs("tempoEsecuzioneEsercizio"));
      }         
    }
    get { return _tempoEsecuzioneEsercizio; }
}

也许你可以使用INotifyPropertyChanged:http://msdn.microsoft.com/it-it/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx

public event PropertyChangedEventHandler PropertyChanged;
private string _tempoEsecuzioneEsercizio;
public string tempoEsecuzioneEsercizio
{
    set 
    {
      if (_tempoEsecuzioneEsercizio != value)
      {
        this._tempoEsecuzioneEsercizio = value;
        this.OnNotifyPropertyChange("tempoEsecuzioneEsercizio");
      }         
    }
    get { return _tempoEsecuzioneEsercizio; }
}

public void OnNotifyPropertyChange(string propertyName)
{
  if (this.PropertyChanged != null)
  {
    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
  }
}