WPF,绑定问题:如何绑定动态资源里面的基本数据类型变量?
先看我的资源定义:<sys:Doublex:Key="D1">0.5</sys:Double>再看绑定:<TextBoxText="{BindingElementName...
先看我的资源定义:
<sys:Double x:Key="D1">0.5</sys:Double>
再看绑定:
<TextBox Text="{Binding ElementName=slider1,Path=Value}"></TextBox>
关键是这个Path,我写对了没有?从运行结果来看没有起作用。如果绑定的是其他对象,path是属性,但是绑定的是一个double类型变量,那path应该怎么写?
现在下面的代码才能实现同步变化的功能,但是如何只用xaml的绑定做到?
private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
this.Resources["D1"] = slider1.Value;
}
Value="{Binding ElementName=D1,Path=DoubleField, Mode=TwoWay}" ValueChanged="Slider_ValueChanged"></Slider>
上面我的代码贴错了一点,这个才是绑定代码。 展开
<sys:Double x:Key="D1">0.5</sys:Double>
再看绑定:
<TextBox Text="{Binding ElementName=slider1,Path=Value}"></TextBox>
关键是这个Path,我写对了没有?从运行结果来看没有起作用。如果绑定的是其他对象,path是属性,但是绑定的是一个double类型变量,那path应该怎么写?
现在下面的代码才能实现同步变化的功能,但是如何只用xaml的绑定做到?
private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
this.Resources["D1"] = slider1.Value;
}
Value="{Binding ElementName=D1,Path=DoubleField, Mode=TwoWay}" ValueChanged="Slider_ValueChanged"></Slider>
上面我的代码贴错了一点,这个才是绑定代码。 展开
1个回答
展开全部
这样是不行的,你应该是想通过滑动条滚动然后更改资源里的值,再反应到文本框中。
原因就出在Resources这个字典上,
为什么ObservableCollection这样的集合中的对象反生更改,可以得到通知? 因为ObservableCollection本身提供了通知的能力他继承了INotifyPropertyChanged接口,但是Resources是没有的, 另外对象本身也要支持INotifyPropertyChanged才行,你这里是slider1,这点是没有问题的。
原因就出在Resources这个字典上,
为什么ObservableCollection这样的集合中的对象反生更改,可以得到通知? 因为ObservableCollection本身提供了通知的能力他继承了INotifyPropertyChanged接口,但是Resources是没有的, 另外对象本身也要支持INotifyPropertyChanged才行,你这里是slider1,这点是没有问题的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询