wpf中的对话框窗体更改内容

wpf中的对话框窗体更改内容,wpf,dialog,Wpf,Dialog,我想为新建和编辑操作显示一个对话框窗体。。。但是,标题、按钮和其他一些内容应该更改。 我想知道我如何才能实现这一点。是否在构造函数处提供枚举值?喜欢Mode.New还是Mode.Edit?有没有办法避免编写像spNewButtons.Visibillity=Collapsed这样的代码。。等,并将其放入wpf?您可以将可见性与模式属性绑定,并创建一个特定的属性以将模式转换为适当的可见性值。即: <StakPanel Visibility={Binding Mode,Converter={S

我想为新建和编辑操作显示一个对话框窗体。。。但是,标题、按钮和其他一些内容应该更改。

我想知道我如何才能实现这一点。是否在构造函数处提供枚举值?喜欢Mode.New还是Mode.Edit?有没有办法避免编写像spNewButtons.Visibillity=Collapsed这样的代码。。等,并将其放入wpf?

您可以将可见性与
模式
属性绑定,并创建一个特定的属性以将模式转换为适当的可见性值。即:

<StakPanel Visibility={Binding Mode,Converter={StaticResource myProperConverter}}></StackPanel>

通常我的WPF对话框都是在弹出窗口中显示的内容控件

我的代码通常如下所示:

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

为了便于阅读,我删除了很多样式,但是你可以看到它是如何组合在一起的。“我的视图模型”通常包含
IsPopupVisible
PopupContent
popupReader
的属性,以及
PopupSaveCommand
PopupCancelCommand

我在大多数情况下都会使用WPF弹出窗口,不过也可以使用WPF弹出窗口