Я использую MVVM Light WPF 4.Как изменить видимость с помощью привязки в WPF
У меня есть ContentPresenter в моем Home.xaml.
<ContentPresenter Name="MDI" Content="{Binding WindowName, Mode=OneWay}">
Я связывание пользовательского элемента управления для этого в ViewModel как
public UserControl WindowName { get; set; }
void ShowSalesEntry()
{
WindowName = null;
WindowName = new SalesEntry();
RaisePropertyChanged("WindowName");
}
с помощью команды в меню нажми и является обязательным штрафом.
Теперь в пользовательском элементе управления у меня есть кнопка, которая я использовал, чтобы закрыть (но закрыть я изменить видимость в сложенном состоянии) этим способом ..
Visibility="{Binding visibility, Mode=OneWay}"
в модели представления пользовательского элемента управления,
public SalesEntryViewModel()
{
visibility = Visibility.Visible;
cmdExitWindow = new RelayCommand(ExitWindow);
RaisePropertyChanged("visibility");
}
и следующие, чтобы закрыть (видимость) разрушилась
public RelayCommand cmdExitWindow { get; set; }
void ExitWindow()
{
visibility = Visibility.Hidden;
RaisePropertyChanged("visibility");
}
Для выхода (означает, что видимость свернута). Это прекрасно работает.
Проблема в том, когда я нажимаю на ту же страницу, я имею в виду показать тот же пользовательский элемент управления, , теперь на этот раз видимость все еще рухнула. Хотя я изменился на видимый в событии загрузки .
Как решить эту проблему .. Я новичок в MVVM WPF .. Пожалуйста, помогите мне ..
Привет, спасибо за ответ ур. Но когда я снова нажимаю меню, и я инициализирую объект правильно ' WindowName = null; WindowName = new SalesEntry(); RaisePropertyChanged («WindowName»); 'Этот путь .. Я не прав? – shanmugharaj
Вы действительно создаете новый экземпляр SalesEntryViewModel где-нибудь? похоже, что вы делаете покупку в новом окне, используете тот же viewModel, не устанавливая видимость на видимые. –
Спасибо за указание, что из Шаня, и хорошая точка Т.Если они вычеркивают одну и ту же модель представления (например, экземпляр модели представления объявлен в app.xaml или другом общедоступном словаре ресурсов), то вы, безусловно, получите этот результат независимо от создания нового объекта. – learningcs