wpf中的对话框格式更改内容

时间:2011-10-12 16:18:36

标签: wpf dialog

我想显示一个新的和编辑动作的对话框表格......但是标题,按钮和其他一些东西应该改变 我想知道如何实现这一点。在构造函数中提供枚举值?喜欢Mode.New还是Mode.Edit?有没有办法避免编写像spNewButtons.Visibillity = Collapsed等等的代码,并把它放在wpf中?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

通常我的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通常包含IsPopupVisiblePopupContentPopupHeader的属性,以及PopupSaveCommandPopupCancelCommand的命令

在大多数情况下我使用my own custom popup,尽管使用WPF弹出窗口可以完成同样的事情。