Видимость пользовательского элемента управления

#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.