Silverlight 默认情况下,在控件的可见性属性绑定并在加载后设置上下文时隐藏控件
我有一个矩形,其Silverlight 默认情况下,在控件的可见性属性绑定并在加载后设置上下文时隐藏控件,silverlight,windows-phone-7,Silverlight,Windows Phone 7,我有一个矩形,其可见性属性绑定到视图模型。出于(明显的)性能原因,我正在页面的Loaded事件中设置DataContext。默认情况下,此矩形应收拢。不幸的是,使用这种“后期上下文”模式,矩形显示的时间只有几秒钟 是否有一种无代码的方法使其默认折叠 如果没有,我可以简单地将属性设置为Collapsed,并将其绑定到加载的事件中,但我的应用程序中有许多这样的矩形 我可以实现一个在加载之前折叠的ContentControl?第二个想法太牵强了吗?我做了一个AppearingControl谁的实现不愿
可见性
属性绑定到视图模型。出于(明显的)性能原因,我正在页面的Loaded
事件中设置DataContext
。默认情况下,此矩形应收拢。不幸的是,使用这种“后期上下文”模式,矩形显示的时间只有几秒钟
是否有一种无代码的方法使其默认折叠
如果没有,我可以简单地将属性设置为Collapsed
,并将其绑定到加载的事件中,但我的应用程序中有许多这样的矩形
我可以实现一个在加载之前折叠的
ContentControl
?第二个想法太牵强了吗?我做了一个AppearingControl
谁的实现不愿意称之为“编码”,因为它太简单了:`
public class AppearingControl : ContentControl
{
public AppearingControl()
{
if( !System.ComponentModel.DesignerProperties.IsInDesignTool )
{
this.Visibility = System.Windows.Visibility.Collapsed;
this.Loaded += new RoutedEventHandler( AppearingControl_Loaded );
}
}
void AppearingControl_Loaded( object sender, RoutedEventArgs e )
{
this.Loaded -= new RoutedEventHandler( AppearingControl_Loaded );
this.ClearValue( AppearingControl.VisibilityProperty );
}
}
我可以这样使用控件:
<slim:AppearingControl HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch">
<Rectangle Visibility="{Binding TipRoundingHasError, Converter={StaticResource VisibilityConverter}}">
<Rectangle.Fill>
<SolidColorBrush Color="#FFFF4040" Opacity="0.5"/>
</Rectangle.Fill>
</Rectangle>
</slim:AppearingControl>
有人能证实我不是发明了轮子,或者更糟的是,用火箭筒杀死了一只苍蝇吗
谢谢。@Martin-您是否尝试过在绑定中设置回退值 我手头没有VS来检查它,但我认为如果您的设置是这样的(很抱歉出现“错误”,这只是一个草稿:
<rectangle visibility={Binding mydata.somthing.someVisibilityProperty} />
然后,如果在加载时绑定,您的控件可能会以默认的Visibility.Visible值“闪烁”。您的绑定在第一次渲染时失败,因为还没有数据绑定。如果是,则只需设置fallbackvalue:
<rectangle visibility={Binding mydata.somthing.someVisibilityProperty, FallbackValue=Collapsed} />
这将导致绑定在无法从源读取时返回“Visibility.Collapsed”
万一
<Rectangle Visibility="{Binding TipRoundingHasError, Converter={StaticResource VisibilityConverter}}">
您在第二个答案中给出的答案基本上如下所示:
<Rectangle Visibility="{Binding TipRoundingHasError, FallbackValue=DEFAULTVALUE, Converter={StaticResource VisibilityConverter}}">
但我现在不记得是否会在FallbackValue上调用yout Converter。这意味着,我现在不能告诉你,是否应该用DEFAULTVALUE替换“Collapsed”或者更确切地说替换“False”。但我认为你会立即测试并选择正确的
有关回退的更多示例,请查看-有一个很好的自定义绑定类示例(是的,不仅转换器可能是自定义的:)我认为这是一种有效的方法。这解决了我在开始时元素闪烁的问题。谢谢