Я схожу с ума от этой ошибки, поэтому мне действительно нужна помощь.Другое свойство MVVM Visibility, которое не обновляется
При обнаружении исключения я должен показать «окно сообщения» (с использованием сетки), которое содержит сетку, но после явной установки контекста данных в сетку все же он не показывает мне сообщение коробка.
код XAML:
<Grid x:Name="gridBackground" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="1" Visibility="{Binding BackgroundVisibility}" Background="#FFB4B4B4" Opacity="0.7"></Grid>
<Grid x:Name="gridWarningMessages" HorizontalAlignment="Center" VerticalAlignment="Center" MinWidth="500" MinHeight="200" MaxWidth="600" MaxHeight="600" Visibility="{Binding WarningMessagesVisibility}">
<TextBlock HorizontalAlignment="Center" TextWrapping="Wrap" VerticalAlignment="Center" Foreground="Black" Margin="50" FontSize="29.333" TextAlignment="Center" x:Name="txtWarningMessages" Text="{Binding WarningOrErrorMessage}" FontFamily="Assets/helvetica-neue-thin-1361522098.ttf#HelveticaNeue"></TextBlock>
</Grid>
ViewModel свойства:
private string warningOrErrorMessage;
public string WarningOrErrorMessage
{
get { return warningOrErrorMessage; }
set
{
if (warningOrErrorMessage != value)
{
warningOrErrorMessage = value;
Notify("WarningOrErrorMessage");
}
}
}
private Visibility warningMessagesVisibility;
public Visibility WarningMessagesVisibility
{
get { return warningMessagesVisibility; }
set
{
if (warningMessagesVisibility != value)
{
warningMessagesVisibility = value;
Notify("WarningMessagesVisibility");
}
}
}
private Visibility backgroundVisibility;
public Visibility BackgroundVisibility
{
get { return backgroundVisibility; }
set
{
if (backgroundVisibility != value)
{
backgroundVisibility = value;
Notify("BackgroundVisibility");
}
}
}
Код, который явно задает DataContext к сетке, и 'шкуры' их при инициализации страницы:
var context = (SubmittedOrdersViewModel)DataContext;
gridWarningMessages.DataContext = context;
gridBackground.DataContext = context;
context.BackgroundVisibility = Visibility.Collapsed;
context.WarningMessagesVisibility = Visibility.Collapsed;
Код (в режиме просмотра, через ICommand ..), который должен отображать сетку после выхода ption ловится (обратите внимание закомментированный «Notify» строку, я попытался явно стреляя Уведомлять после установки значения на собственности, но по-прежнему имеет те же проблемы):
private void deleteSelectedOrder(object param)
{
try
{
throw new Exception("");
//working code to delete the order goes here
}
catch (Exception)
{
WarningOrErrorMessage = "An error occurred while trying to delete this order.";
Notify("WarningOrErrorMessage");
BackgroundVisibility = Visibility.Visible;
//Notify("BackgroundVisibility");
WarningMessagesVisibility = Visibility.Visible;
//Notify("WarningMessagesVisibility");
}
}
Пожалуйста, пожалуйста, помогите мне. :(Спасибо
Вместо привязки к переменной видимости, связывание с логическим, тогда использование конвертера видимости boolean – Shoe
не может реплицировать проблему. Здесь ваш код работает нормально (тестируется с кодом как DataContext вместо 'SubmittedOrdersViewModel'). и явно установка DataContext для обеих сеток кажется бесполезным, по умолчанию должен был унаследовать родительский DataContext. – har07
необходимо проверить, является ли обязательным, либо поставлять некоторый dummyconverter для отладки, либо отлаживать get {} вашего свойства после вызова Notify или использовать Snoop и проверять любые ошибки привязки. –