Форма диалога в wpf изменить содержимое - PullRequest
1 голос
/ 12 октября 2011

Я хочу отобразить диалоговую форму для новых и редактировать действия ... Однако заголовок, кнопки и некоторые другие вещи должны измениться.
Мне интересно, как я мог бы реализовать это. Предоставить значение перечисления в конструкторе? Нравится Mode.New или Mode.Edit? Есть ли способ избежать написания кода типа spNewButtons.Visibillity = Collapsed .. и т. Д. И поместить его в wpf?

Ответы [ 2 ]

0 голосов
/ 12 октября 2011

Обычно все мои WPF-диалоги - это ContentControl, которые отображаются во всплывающем окне.

Мой код обычно выглядит так:

<Grid Name="RootPanel">

    <!-- Other Content -->

    <!-- Popup is always last so it gets displayed on top of other contnet -->
    <local:PopupPanel
        local:PopupPanel.PopupParent="{Binding ElementName=RootPanel}"
        local:PopupPanel.IsPopupVisible="{Binding IsPopupVisible}"

        local:PopupPanel.PopupEnterKeyCommand="{Binding SaveCommand}"
        local:PopupPanel.PopupEscapeKeyCommand="{Binding CancelCommand}">

        <DockPanel>
            <!-- Header -->
            <Label DockPanel.Dock="Top" Content="{Binding PopupHeader}" />

            <!-- Buttons -->
            <StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Center">
                <Button Content="Save" Command="{Binding PopupSaveCommand}" />
                <Button Content="Cancel" Command="{Binding PopupCancelCommand}" />
            </StackPanel>

            <!-- Actual content displayed is determined by DataTemplates -->
            <ContentControl Content="{Binding PopupContent}" />
        </DockPanel>
    </local:PopupPanel>

</Grid>

Я удалил множество стилей, чтобы сделать это прощечитать, но вы можете увидеть общее представление о том, как это все вместе.Моя ViewModel обычно содержит свойства для IsPopupVisible, PopupContent и PopupHeader и команды для PopupSaveCommand и PopupCancelCommand

Я использую мое собственное всплывающее окно в большинстве случаев, хотя то же самое можно сделать с помощью всплывающего окна WPF.

0 голосов
/ 12 октября 2011

Вы можете связать видимость с вашим свойством mode и создать определенный IValueConverter для преобразования режима в правильное значение Видимости.то есть:

<StakPanel Visibility={Binding Mode,Converter={StaticResource myProperConverter}}></StackPanel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...