非常简单,但是我把头发拉过来。
我正在使用mvvm Light创建一个视图模型,在视图中我有一个属性,我也是绑定。
private TimeSpan _eventDuration
public TimeSpan EventDuration
{
get { return _eventDuration; }
set
{
_eventDuration = value;
RaisePropertyChanged("EventDuration");
}
}
非常简单而不复杂。现在在UI中我有一个网格,在这个网格上我使用了一个名为telerik
的{{1}}控件。此控件与上述属性绑定在一起。
RadTimeSpanPicker
现在,当我运行我的代码并在UI中更改我的RadTimeSpanControl的值时,我发现EventDuration属性发生了更改。
我的问题是,如果我更改属性,则UI不会更新。
所以,只是澄清一下。
用户界面,我将时间跨度更改为Value={Binding EventDuration, Mode=TwoWay}
(即16秒)。我看到EventDuration属性更改。然后我做00:00:16
然后我看到该属性已设置,但用户界面仍显示EventDuration = TimeSpan.FromSeconds(0);
更新:解决了问题 我将TimeSpanPicker设置为最小值0:0:1(1秒),因此当尝试将0分秒的TimeSpan指定为UI部分时,它会忽略它。
答案 0 :(得分: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);
答案 1 :(得分: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);
}