#c# #silverlight #silverlight-4.0 #visibility
#c# #silverlight #silverlight-4.0 #видимость
Вопрос:
В моем приложении есть одна боковая панель, которая содержит эти два компонента :
<Grid x:Name="AF" Visibility="Visibility">
<betata:AForm Height="508" VerticalAlignment="Top"/>
</Grid>
<Grid x:Name="AN" Visibility="Collapsed">
<betata:ANav Height="508" VerticalAlignment="Top"/>
</Grid>
в форме есть кнопка гиперссылки с помощью этого метода :
private void HyperlinkButton_Click(object sender, RoutedEventArgs e)
{
Visibility = Visibility.Collapsed;
Sidebar sb = new Sidebar();
sb.AN.Visibility = Visibility.Visible;
}
но я не уверен, почему AForm будет свернут, но AN не сможет стать видимым. или есть какое-либо другое решение для реализации ::
эта строка на главной странице для вызова UC_A ::
<DWDS_LULCS_Views_Sidebar:Sidebar HorizontalAlignment="Left" Width="264"/>
- Удержание главной страницы
- Пользовательский элемент управления A (боковая панель), удерживающий
- Пользовательский элемент управления B (форма входа администратора) и
- Пользовательский элемент управления C (меню навигации администратора)
UC_B по умолчанию виден, и нажмите кнопку в UC_B, чтобы вызвать UC_C UC_A, чтобы изменить видимость на видимую?
Комментарии:
1. все это очень сбивает с толку … во-первых, видимость =»Видимость» неверна, кроме того, почему вы это делаете? Боковая панель sb = новая боковая панель ();
Ответ №1:
Наконец-то эта проблема решается … я делаю это таким образом, создаю что-то в глобальной переменной для проверки, следует ли сделать видимым и свернуть, затем передаю один обработчик событий боковой панели (layout_updated). когда я изменяю видимость UC_B, это повлияет на UC_A, и триггер будет вызываться. наконец, событие layout_updated UC_A изменит видимость UC_C, став видимым.
Ответ №2:
я делаю таким образом, делаю что-то в глобальной переменной для проверки, нужно ли что-то сделать видимым и свернуть,
Другой подход заключается в использовании подхода mvvm
<Border Background="Red" Visibility="{Binding HasChanges, Converter={StaticResource visibilityConverter}, FallbackValue=Collapsed}">
В ваших ресурсах вам нужно будет добавить
<local:BooleanToVisibilityConverter x:Key="visibilityConverter" OnTrue="Visible" OnFalse="Collapsed" />
Затем у вас может быть глобальный объект, который вы можете установить, когда конструктор вашего элемента управления после
InitializeComponent();
DataContext=new GlobalObjectKnownAsViewModel(); // являются источником привязки
Этот подход был бы хорошим первым началом, а позже вы можете рассмотреть возможность использования PRISM / mvvm light для дополнительных поведений и инфраструктуры, которые они предоставляют для работы mvvm.