2014-04-03 95 views
0

這件事很簡單,但我把頭髮拉出來。爲什麼TwoWay綁定不會更新UI元素?

我正在使用mvvm Light創建視圖模型,並在視圖中我有一個屬性,我也綁定了。

private TimeSpan _eventDuration 
public TimeSpan EventDuration 
{ 
    get { return _eventDuration; } 
    set 
    { 
     _eventDuration = value; 
     RaisePropertyChanged("EventDuration"); 
    } 
} 

很簡單,並不複雜。現在在UI中我有一個網格,在這個網格上我使用了一個名爲RadTimeSpanPickertelerik控件。這個控件就像這樣綁定到上面的屬性。

Value={Binding EventDuration, Mode=TwoWay} 

現在,當我運行我的代碼,並改變我的UI RadTimeSpanControl的價值,我看到的變化發生在EventDuration財產,因爲它應該。

我的問題是,如果我改變屬性,用戶界面不會更新。

所以,只是爲了澄清。 用戶界面,我將時間範圍更改爲00:00:16(即16秒)。我看到EventDuration屬性更改。然後我做EventDuration = TimeSpan.FromSeconds(0);,我看到後,該屬性設置,但用戶界面仍然顯示00:00:16

UPDATE:問題就迎刃而解了 我有我的TimeSpanPicker設置爲0最小值:0:1(1秒),試圖在將0分鐘的TimeSpan分配給它忽略的UI部分。

回答

0
So, just to clarify. UI, I change the timespan to 00:00:16 (that's 16 seconds). I see the EventDuration property change. 

錯字可能? EventDuration = TimeSpan.FromSeconds(0);

+0

對不起,我會糾正 – Gaz83

0

這似乎爲我的作品:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
     <StackPanel> 
      <telerikInput:RadTimeSpanPicker Value="{Binding EventDuration, Mode=TwoWay}" x:Name="radTimeSpanPicker"/> 
      <Button Command="{Binding SetToNow}" Content="Set To Now" /> 
     </StackPanel> 
    </Grid> 

代碼

public class MainViewModel : ViewModelBase 
{ 
    public RelayCommand SetToNow { get; private set; } 

    /// <summary> 
    /// Initializes a new instance of the MainViewModel class. 
    /// </summary> 
    public MainViewModel() 
    { 

     this.SetToNow = new RelayCommand(SetToNowAction); 
    } 

    private TimeSpan _eventDuration; 

    public TimeSpan EventDuration 
    { 
     get { return _eventDuration; } 
     set 
     { 
      _eventDuration = value; 
      RaisePropertyChanged("EventDuration"); 
     } 
    } 

    private void SetToNowAction() 
    { 
     this.EventDuration = TimeSpan.FromSeconds(0); 
    } 
+0

我發現這個問題,那些是你錯過了,當一切分析愚蠢的事情之一。 – Gaz83

相關問題