【问题标题】:Binding data to slider doesn't work将数据绑定到滑块不起作用
【发布时间】:2012-06-17 15:58:15
【问题描述】:

我的 windows phone 项目中的绑定有问题。我将一个类绑定到一个滑块,但它不会更新值。如果我第一次启动应用程序,则绑定连接已正确建立,并且滑块确实具有正确的值。但是,如果我更改“位置”或“持续时间”值,滑块将不会随之更新。

你能帮帮我吗?我没有任何线索,我做错了什么:(

类.cs:

public class Status : INotifyPropertyChanged
{
  public event PropertyChangedEventHandler PropertyChanged;
  private void PropChanged(string propName)
  {
    if (PropertyChanged != null)
    {
      PropertyChanged(this, new PropertyChangedEventArgs(propName));
    }
  }

  public double duration
  {
    get { return _duration; }
    set
    {
      if (this._duration == value)
        return;

      _duration = value;
      PropChanged("duration");
    }
  }

  public double position
  {
    get { return _position; }
    set
    {
      if (this._position == value)
        return;

      _position = value;
      PropChanged("position");
    }
  }
}

MainPage.xaml.cs:

public partial class MainPage : PhoneApplicationPage
{
  public MainPage()
  {
    this.ContentPanel.DataContext = _Status;
  }
}

MainPage.xaml:

 ...
<Grid x:Name="ContentPanel" Margin="12,12,12,0" Grid.RowSpan="2">
    <Slider x:Name="sl_PlayBackProgress"
            Value="{Binding Path=position}"
            Maximum="{Binding Path=duration}"
            Height="91"
            HorizontalAlignment="Left"
            Margin="0,40,0,0"
            VerticalAlignment="Top"
            Width="408"/>
</Grid>
...

【问题讨论】:

    标签: c# windows-phone-7 data-binding slider


    【解决方案1】:

    不知道它是否与普通的 XAML/WPF 不同。但在正常情况下,我建议首先将 Binding.Mode 设置为 TwoWay,然后在 position.set 入口处休息 - 并查看通过的 value

    【讨论】:

    • 将 Binding.Mode 设置为 'TwoWay' 没有进行任何更改。 '位置'变量也被正确更新。我认为这是绑定本身的问题。如果我手动将“最大值”属性设置为静态值,滑块会正确更新。有没有可能,这两个属性都不能绑定?
    • 编辑:对不起,我必须纠正自己。我已经过度阅读了 TwoWay 并将其设置为“OneWay”......我的错,对不起!但是你能向我解释一下,为什么我必须将它设置为“TwoWay”?据我了解,我做了一个“单向”绑定。
    猜你喜欢
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 2021-09-24
    • 1970-01-01
    相关资源
    最近更新 更多