Видимость пользовательского контроля - PullRequest
0 голосов
/ 02 ноября 2011

В моем приложении есть одна боковая панель, которая содержит два компонента:

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

в AForm появилась кнопка с гиперссылкой следующим способом:

    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, изменить видимость на видимую?

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

я делаю таким образом, что-то делаю в глобальной переменной для проверки, что делать видимым и свернуть,

Другой подход - использовать подход 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 (); // источник Binding

Этот подход был бы хорошим началом, и позже вы можете посмотреть, возможно, используя PRISM / mvvm light для дополнительного поведения и инфраструктуры, которые они предоставляют для работы mvvm.

1 голос
/ 06 ноября 2011

Наконец, эта проблема решается ... я делаю таким образом, делаю что-то в глобальной переменной для проверки того, что делать видимым и свернуть, затем отдаю один обработчик событий на боковую панель (layout_updated). когда я изменяю видимость UC_B, это влияет на UC_A и вызывается триггер. наконец, событие layout_updated UC_A изменит видимость UC_C, ​​которая станет видимой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...