我需要你的幫助了。 我使用屬性綁定來控制我的窗口中的usercontrol的可見性。我遵循一些指導,但現在我掛了。PropertyChangedEvent未被捕獲到Collapse UserControl
下面是代碼:
//ViewModel:
public class homeViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
...
//Property
private Visibility _myHome;
public Visibility Home
{
get { return _myHome; }
set {
_myHome = value;
this.PropertyChanged(this, new propertyChangedEventArgs("Home"));
}
}
//Command
public ICommand homeHideButton
{
get { return new RelayCommand(o => {hide_Click(this); });}
}
private void hide_Click(object sender= null, RoutedEventArgs e = null)
{
Home = Visibility.Collapse;
}
public ICommand homeShowButton
{
get { return new RelayCommand(o => {show_Click(this); });}
}
private void show_Click(object sender= null, RoutedEventArgs e = null)
{
Home = Visibility.Visible;
}
}
XAML:
<Window ... >
<Window.DataContext>
<vm:homeViewModel />
</Window.DataContext>
<StackPanel>
<Button Content="Show Home" Command="{Binding homeShowButton}" />
<Button Content="Collapse Home" Command="{Binding homeHideButton}" />
<views:home Visibility="{Binding Home }" />
<!-- home is an usercontrol -->
</StackPanel>
</Window>
我覺得代碼是好的,因爲摺疊按鈕的觀點崩潰。但顯示按鈕不工作。 我認爲摺疊視圖不會捕獲propertychange事件。
你說得對。 _myHome應該是私人的。我有問題,我需要一個定製的家庭(發送通知),但如果我回家在家的getter我有一個無限循環(說vs),因此我有第二個_myHome。 – Syrlia
是的,這是使用它的方式。只有'_myHome'不需要是屬性。您可以將其定義爲'private Visibility _myHome;' –
YES。 Fody是一個很棒的圖書館。我可以強烈推薦它。我也可以推薦使用WPF檢查器。它是一個獨立的應用程序,允許您將它附加到您的調試應用程序,並檢查其中的所有內容。更新檢查器中的值並在UI中觀察它的更新。讓生活更容易檢測到不受限制的元素或錯誤的綁定模式。 – user853710