WPF中PropertyChanged为空,帮忙看一下

Saerben 2017-05-11 09:45:19
UI是一个滑动条和一个进度条的结合,
<Grid>
<Slider HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Minimum="{Binding Path=MinValue}"
Maximum="{Binding Path=MaxValue}" Value="{Binding Path=CurrentValue}" Name="valueSlider" Width="264"/>
<ProgressBar HorizontalAlignment="Left" Height="24" Margin="-17,125,-10,0" VerticalAlignment="Top" Width="331"
Minimum="{Binding ElementName=valueSlider, Path=Minimum}"
Maximum="{Binding ElementName=valueSlider, Path=Maximum}"
Value="{Binding ElementName=valueSlider,Path=Value}"
RenderTransformOrigin="0.5,0.5">
<ProgressBar.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="-36.973"/>
<TranslateTransform/>
</TransformGroup>
</ProgressBar.RenderTransform>
</ProgressBar>
</Grid>

新建的外部类PersistentSlider,实现INotifyPropertyChanged接口
class PersistentSlider:INotifyPropertyChanged
{
private int _minValue;
private int _maxValue;
private int _currentValue;

public int MinValue {

get { return _minValue; }
set {
_minValue = value;
OnPropertyChanged("MinValue");
}
}

public int MaxValue
{

get { return _minValue; }
set
{
_maxValue = value;
OnPropertyChanged("MaxValue");
}
}

public int CurrentValue
{

get { return _minValue; }
set
{
_currentValue= value;
OnPropertyChanged("CurrentValue");
}
}

public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyname)
{
if (propertyname!=null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyname));
}
}

}

在隐藏文件中初始化外部类
private PersistentSlider _sliderData = new PersistentSlider {MinValue=1,MaxValue=200,CurrentValue=100 };
public Window3()
{
this.DataContext = _sliderData;
InitializeComponent();
}

运行就报PropertyChanged为null,有哪位大神可以帮忙看一下吗
...全文
701 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
打老虎zz 2017-05-11
  • 打赏
  • 举报
回复
那就不让它为null不就好了 类似 public event PropertyChangedEventHandler PropertyChanged = delegate { };
shoppo0505 2017-05-11
  • 打赏
  • 举报
回复
new PropertyChangedEventArgs(propertyname)为NULL了吧,debug看一下
exception92 2017-05-11
  • 打赏
  • 举报
回复
如果按照#2的写法, 那么, if ( PropertyChanged!=null) 这句完全可以省略掉。
exception92 2017-05-11
  • 打赏
  • 举报
回复
public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string propertyname) { if (propertyname!=null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyname)); } } -》 红色改为 判断 PropertyChanged,而不是propertyname。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧