WPF推迟控制渲染

时间:2014-04-30 08:56:42

标签: .net wpf

我需要推迟渲染部分视图,直到ViewModel的属性获得某些值。我试图将Visible = Hidden设置为某个容器,但它不起作用:无论如何都会呈现UI(但不会显示)。我想解决方案是使用DataTemplate。我尝试了以下方法:

<ContentControl>
    <DataTemplate>
        <DataTemplate.Triggers>
            <DataTrigger Binding="{Binding DataContext.State}" Value="0"></DataTrigger>
        </DataTemplate.Triggers>

        <TextBlock>Yes</TextBlock>
    </DataTemplate>
</ContentControl>

但它没有用。请提示我使用DataTemplate使用权的方法(或解决此问题的其他方法)。

1 个答案:

答案 0 :(得分:2)

这里有棘手的问题,但这是我的看法。

我假设您正在等待初始化State属性。添加一个布尔属性到ViewModel,即IsStateReady,触发PropertyChanged

private bool isStateReady;

public bool IsStateReady
{
   get { return isStateReady; }
   set 
   {
      isStateReady = value;
      OnPropertyChanged("IsStateReady");
   }
}

然后,仅当Trigger为真时,使用Template设置IsStateReady属性来定义您的控件:

        <Control>
            <Control.Style>
                <Style TargetType="{x:Type Control}">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding IsStateReady, UpdateSourceTrigger=PropertyChanged}" Value="True">
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate>
                                        <!-- your template here-->
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Control.Style>
        </Control>

这应该是你的伎俩