combobox1.SelectedItem
綁定到SelectedItemProperty
。- 的時候
SelectedItemProperty
設置,MaxValueProperty
計算 MaxValueProperty
勢必slider1.Maximum
滑塊上的WPF綁定不會更新上最大更改slider1.Value
勢必SliderValueProperty
這些都做工精細,除了當combobox1.SelectedItem
變化,MaxValueProperty
是計算出來的,並且小於SliderValueProperty
。
在查看:
slider1.Maximum
被更新,因爲MaxValueProperty
改變,slider1.Value
設置爲slider1.Maximum
爲滑塊的默認行爲時,最大的變化小於該值。
然而,當這種情況發生,SliderValueProperty
沒有更新到新slider1.Value
<Slider Name="slider1" Maximum="{Binding Path=MaxValueProperty, Mode=TwoWay}" Value="{Binding Path=SliderValueProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
我知道slider1.Value正在得到改變,因爲我已經綁定了一個標籤,標籤更改
<Label Content="{Binding ElementName=slider, Path=Value, Converter={StaticResource NumberToStringConverter}}" />
如何確保綁定更新?
你回答不久之前,我做了一個類似的if語句來你的,但財產,分配SliderValueProperty提高它的PropertyChanged事件,固定我的問題。但有一個問題 - 爲什麼在私人支持字段的計算,然後手動提升屬性更改事件? – xdumaine 2011-03-20 02:26:16
鑑於你的問題的它似乎最明確和直接的方式做到這一點的時候MVVM在使用說明。你有一個財產製定者改變了其他財產的條件,雖然你可以按照你選擇的方式沒有問題地做到這一點,但我對你的計劃還沒有其他的瞭解。當我希望更改顯示在UI中時,我通常會選擇明確提出PropertyChanged。 – 2011-03-20 05:46:10
是的,它只是'if(SliderValueProperty> MaxValueProperty){SliderValueProperty = MaxValueProperty; }'和'if(_SliderValueProperty> _MaxValueProperty){_ SliderValueProperty = _MaxValueProperty; RaisePropertyChanged(SliderValueProperty);}' – xdumaine 2011-03-20 15:27:15