我想显示一个新的和编辑动作的对话框表格......但是标题,按钮和其他一些东西应该改变 我想知道如何实现这一点。在构造函数中提供枚举值?喜欢Mode.New还是Mode.Edit?有没有办法避免编写像spNewButtons.Visibillity = Collapsed等等的代码,并把它放在wpf中?
答案 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通常包含IsPopupVisible
,PopupContent
和PopupHeader
的属性,以及PopupSaveCommand
和PopupCancelCommand
的命令
在大多数情况下我使用my own custom popup,尽管使用WPF弹出窗口可以完成同样的事情。