代码之家  ›  专栏  ›  技术社区  ›  ecathell

视图可见性不变

  •  0
  • ecathell  · 技术社区  · 14 年前

    我有一个外壳,里面有两个视图。它们都使用相同的viewmodel,实际上shell也使用相同的viewmodel。我在shell中有两个按钮,用来改变这两个视图的可见性。看起来,即使命令正在启动,值正在更改,并且onpropertychanged配置正确,视图也没有刷新。我已经尝试从父shell和视图本身控制可见性。

    以下是我的命令:

    Public ReadOnly Property ShowMinimalistSearchResultsView As ICommand
                Get
                    If _cmdShowMinimalistSearchResultsView Is Nothing Then
                        _cmdShowMinimalistSearchResultsView = New RelayCommand(AddressOf ShowMinimalistSearchResultsViewExecute)
    
                    End If
                    Return _cmdShowMinimalistSearchResultsView
    
                End Get
            End Property
    
            Public ReadOnly Property ShowSearchResultsView As ICommand
                Get
                    If _cmdShowSearchResultsView Is Nothing Then
                        _cmdShowSearchResultsView = New RelayCommand(AddressOf ShowSearchResultsViewExecute)
                    End If
                    Return _cmdShowSearchResultsView
    
                End Get
            End Property
    

    Private Sub ShowMinimalistSearchResultsViewExecute()
        Me.IsMinimalistSearchResultsViewVisible = True
    End Sub
    
    Private Sub ShowSearchResultsViewExecute()
        Me.IsMinimalistSearchResultsViewVisible = False
    
    End Sub
    

    这是可视布尔值。。。。

    Private _isminimalistsearchresultsviewvisible As Boolean
    Public Property IsMinimalistSearchResultsViewVisible As Boolean
        Get
            Return _isminimalistsearchresultsviewvisible
        End Get
        Set(ByVal value As Boolean)
            _isminimalistsearchresultsviewvisible = value
            OnPropertyChanged("IsMinimalistSearchResultsViewVisible")
        End Set
    End Property
    

    <local:MinimalistSearchResultsView Grid.Row="1"
                                               Visibility="{Binding IsMinimalistSearchResultsViewVisible,Converter={StaticResource DebugConverter}}" />
    

    目前,我所要做的是让这一个视图显示或消失时,我发出的命令。我正在使用调试转换器来验证可见性是否正在尝试更改,而实际上并不是。

    为什么这样不行?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Scott    14 年前

    当你说“then returns it”时,你是说它返回布尔值,还是可见性。如果您没有使用BooleanToVisibilityConverter,您应该确保您的转换器正在执行将布尔值转换为可见。可见或者可见性.隐藏/折叠.

    如果您只是返回进入转换器的布尔值,那么我相信这将是一个大问题。

        2
  •  0
  •   ecathell    14 年前