【发布时间】:2012-02-10 09:53:10
【问题描述】:
我有一个专为地图点浏览而设计的页面。我想向用户显示一个边框。此边框包含用户信息(有点像消息框)。
我使用 MVVM 模式...
我想在 3 秒后隐藏边框。一切正常(边框在 3 秒后隐藏),直到我开始使用地图控件移动。那么边框就永远不会隐藏了。
附加代码将解释更多...
视图中我的部分 XAML 代码:
<Grid>
<my:Map
Margin="0,0,0,0"
x:Name="MainMap"
CredentialsProvider="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Center="{Binding MapCenter, Mode=TwoWay}"
ZoomLevel="{Binding ZoomLevel, Mode=TwoWay}"
myMapViewModel:BindingHelpers.TileSource="{Binding CurrentMap}"
myMapViewModel:BindingHelpers.PointsSource="{Binding Points}"
myMapViewModel:BindingHelpers.CurrentPositionPushpin="{Binding CurrentGeoPosition}"
myMapViewModel:BindingHelpers.KmlPointSelectedCommand="{Binding ShowSelectedKmlPointCommand}"
Grid.Row="0"
CopyrightVisibility="Collapsed"
ZoomBarVisibility="Collapsed"
Padding="0"
>
<my:Map.Mode>
<MSPCMCore:MercatorMode/>
</my:Map.Mode>
<TextBlock
Grid.Row="0"
x:Name="MapNameTile"
Text="{Binding CurrentMapName}"
Opacity="0.5"
Style="{StaticResource PhoneTextNormalStyle}"
VerticalAlignment="Top"
HorizontalAlignment="Left"
Canvas.ZIndex="2"
Foreground="{StaticResource PhoneAccentBrush}"
/>
</my:Map>
<Border
Canvas.ZIndex="20"
Background="{StaticResource PhoneAccentBrush}"
Opacity="0.85"
Height="100"
Width="430"
VerticalAlignment="Top"
HorizontalAlignment="Center"
CornerRadius="15"
Padding="15"
Margin="0,25,0,0"
Visibility="{Binding IsInformationPanelVisible, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}"
>
<TextBlock
Style="{StaticResource PhoneTextNormalStyle}"
TextWrapping="Wrap"
Text="{Binding InformationPanelText}"
/>
</Border>
来自 ViewModel 的部分代码:
public bool IsInformationPanelVisible
{
get
{
return this._isInformationPanelVisible;
}
set
{
if (this._isInformationPanelVisible == value)
{
return;
}
this._isInformationPanelVisible = value;
if (this._isInformationPanelVisible)
{
new Timer((state) =>
{
this.IsInformationPanelVisible = false;
}, null, 3000, 0);
}
DispatcherHelper.CheckBeginInvokeOnUI(() =>
{
RaisePropertyChanged("IsInformationPanelVisible");
});
}
}
我的问题是:为什么在用户触摸显示屏并移动地图的情况下它不起作用?
无法调试。
我接受了测试,似乎没有触发 Timer CallBack。
【问题讨论】:
标签: silverlight windows-phone-7 mvvm timer mvvm-light