2013-10-14 79 views
5

在MVVM場景/節目堆疊面板,我想顯示/隱藏基於一個超鏈接點擊或點擊圖片的用戶控件。這在XAML中如何實現?如何隱藏在WPF MVVM

+0

[數據綁定](http://msdn.microsoft.com/en-us/library/ms750612.aspx)的['能見度'](http://msdn.microsoft.com/en-us/library/system.windows.uielement.visibility(v = VS.95)的.aspx)使用'BoolToVisibiltyConverter' –

+1

沒有財產上的VM布爾屬性在我看來,需要在ViewModel上定義一個屬性。請參閱我的答案,瞭解如何在XAML中執行此操作。 – Marc

+0

@馬克,我看不出你的鏈接 – SNS

回答

4

綁定Visibility屬性視圖模型的一個布爾值屬性,使用BooleanToVisibilityConverter

<Window.Resources> 
    <BooleanToVisibilityConverter x:Key="visibilityConverter" /> 
</Window.Resources> 

... 

<MyUserControl Visibility="{Binding IsMyUserControlVisible, Converter={StaticResource visibilityConverter}}" /> 

視圖模型:

private bool _isMyUserControlVisible; 
public bool IsMyUserControlVisible 
{ 
    get { return _isMyUserControlVisible; } 
    set 
    { 
     _isMyUserControlVisible = value; 
     OnPropertyChanged("IsMyUserControlVisible"); 
    } 
} 
0

說你有你的視圖模型,確定是否將一個布爾屬性顯示控制

public bool DisplayControl { get; set; } 
<StackPanel Visibility="{Binding DisplayControl, Converter={StaticResource visibilityConverter}}"/> 
+0

我沒有提到'INotifyPropertyChanged',你就會有在'二傳手使用DisplayProperty'以便每次數據更改時更新視圖。 –

13

使用一個切換按鈕,使用BooleanToVisibilityConverter綁定您UserControl的可見性:

定義的資源0使用BooleanToVisibiltyConverter

<Window.Resources> 
    <BooleanToVisibilityConverter x:Key="visibilityConverter" /> 
</Window.Resources> 

而且你的控件綁定您StackPanel的visibiilty :

<BooleanToVisibilityConverter x:Key="BoolToVisibility" /> 

的切換按鈕:

<ToggleButton x:Name="VisibilityToggle> 
    <Image Source="..." /> 
</ToggleButton> 

用戶控制:

<MyControl Visibility="{Binding IsChecked, ElementName=VisibilityToggle, Converter={StaticResource BoolToVisibility}}" /> 
+0

謝謝你。有效。我想用樣式來改變切換按鈕的外觀。是否有可能 – SNS

+0

當然,你可以像任何其他控件一樣設計ToggleButton。如果答案解決了這個問題,您可以接受並且提出所有其他幫助解決問題的答案...... – Marc