2011-05-13 99 views
0

我一直在試圖從我的viewmodel設置一個stackpanel的可見性,但沒有多少運氣。下面是我的XAML:如何使用MVVM Light設置WP7中的StackPanel的可見性?

<StackPanel Visibility="{Binding Path=IsVisible}"/> 

注意:我已成功將我的視圖連接到了我的viewmodel。我所有的其他屬性都能正確綁定。

繼承人我的ViewModel代碼:

private Visibility isVisible; 
    public Visibility IsVisible 
    { 
     get 
     { 
      return isVisible; 
     } 
     set 
     { 
      isVisible = value; 
      RaisePropertyChanged("IsVisible"); 
     } 
    } 

這種方法,因爲我一直在使用沒有問題,所有的其他財產的工作。我無法獲得轉移的可見性。有什麼建議麼?

+0

看起來應該對我有用。你有沒有在setter/getter中設置斷點來確保它按照你的預期更新?在輸出窗口中是否有任何綁定錯誤? – kenwarner 2011-05-13 01:28:40

回答

3

在我的機器上工作:D

我知道,不是一個很好的答案。也許看看我得到的示例代碼將幫助:

將datacontext設置爲MainViewModel並在堆棧面板上綁定IsVisible。我也必將按鈕,命令將在可見性屬性更改爲摺疊: (XAML)

<UserControl x:Class="MvvmLight1.MainPage" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     mc:Ignorable="d" 
     Height="300" 
     Width="300" 
     DataContext="{Binding Main, Source={StaticResource Locator}}"> 

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="Skins/MainSkin.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 

<Grid x:Name="LayoutRoot"> 
    <StackPanel Height="100" Visibility="{Binding IsVisible}" HorizontalAlignment="Left" Margin="0,29,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="200"> 
     <TextBlock Height="23" Name="textBlock1" Text="I'm here!" /> 
    </StackPanel> 
    <Button Content="Make the Stackpanel GO!" Height="23" HorizontalAlignment="Left" Name="button1" VerticalAlignment="Top" Width="158" Command="{Binding Path=MakeVisibleCommand}" /> 
</Grid> 

沒有代碼隱藏,顯示課程。

而IsVisible屬性和MakeVisibleCommand財產上的視圖模型:

private Visibility _isVisible = Visibility.Visible; 

    public Visibility IsVisible 
    { 
     get 
     { 
      return _isVisible; 
     } 

     set 
     { 
      _isVisible = value; 

      RaisePropertyChanged("IsVisible"); 
     } 
    } 

    public RelayCommand MakeVisibleCommand 
    { 
     get 
     { 
      return new RelayCommand(() => IsVisible = Visibility.Collapsed); 
     } 
    } 

當然,請確保您的視圖模型類從ViewModelBase和所有的爵士樂繼承。您已經提到您的其他屬性綁定正確,但在調試時,始終注意「輸出」窗口中的綁定錯誤。

希望有幫助!

+0

哦快照..技術上我沒有這樣做WP7項目..我懷疑這個例子應該是相同的,但。 – schummbo 2011-05-13 01:51:02

相關問題