Как добавить модальную рамку, как курсор ожидания в приложении WPF - PullRequest
1 голос
/ 19 августа 2011

В моем приложении WPF есть определенные трудоемкие действия, которые активируются, когда пользователь нажимает кнопку.Что я хотел бы сделать, так это показать пользователю модальное поле, например, «Ожидание курсора», очень похожее на то, что было сделано в веб-приложениях, чтобы указать, что процесс происходит в фоновом режиме.Какие средства управления мне нужны для достижения этой цели?

Ответы [ 2 ]

1 голос
/ 19 августа 2011

Ты не слишком много смотришь здесь.Я не уверен, как вы спроектировали свое приложение, но для себя я создал класс NavPage, который расширяет класс UserControl и имеет свойство Modal типа NavPage и Closeevent.

Таким образом, мой элемент управления NavPage позволяет мне размещать другие элементы управления NavPag как модальные внутри него.Функция Close просто закрывает страницу.

Вот как выглядит мой шаблон для элемента управления NavPage.

<ControlTemplate x:Key="Fx_NavPage_ControlTemplate" TargetType="{x:Type fx:NavPage}">
    <Grid>
        <Border x:Name="TheContainer" CornerRadius="{TemplateBinding CornerRadius}" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}">
            <ContentControl Content="{TemplateBinding Content}" />
        </Border>
        <Border x:Name="TheCover" CornerRadius="{TemplateBinding CornerRadius}" Background="#20000000" Visibility="Collapsed" />
        <ContentControl x:Name="TheModal" Content="{TemplateBinding Modal}" Visibility="Collapsed" />
    </Grid>
    <ControlTemplate.Triggers>
        <DataTrigger Binding="{Binding Modal, RelativeSource={x:Static RelativeSource.Self}, Converter={StaticResource IsNullConverter}}" Value="False">
            <Setter TargetName="TheCover" Property="Visibility" Value="Visible" />
            <Setter TargetName="TheModal" Property="Visibility" Value="Visible" />
        </DataTrigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

Так что в основном у меня просто есть Grid с ContentControl (TheContainer), Border (TheCover) и другим ContentControl (TheModal),Затем у меня есть DataTrigger, который проверяет, является ли значение свойства Modal для NavPage, и если оно не равно нулю, оно изменяет видимость TheCover и TheModal на видимое.Обложка - это просто полупрозрачный элемент управления Border, который не дает пользователю нажимать элементы управления в главном NavPage.

Надеюсь, это поможет вам, или вы можете просто использовать BusyIndicator, предложенный выше, я никогда не использовалон сам, поэтому не может дать вам никакой информации там.Если вы решили пойти по этому пути и вам нужна помощь, позвольте мне сейчас получить больше кода для вас.

1 голос
/ 19 августа 2011
...