2011-10-12 32 views
1

我想顯示一個新的和編輯操作的對話窗體......然而標題,按鈕和其他一些東西應該改變。
我想知道我該如何實現這一點。在構造函數中提供一個枚舉值?像Mode.New或Mode.Edit?有沒有辦法避免編寫像spNewButtons.Visibillity = Collapsed ..等代碼,並將其放入wpf?wpf中的對話窗體改變內容

回答

0

您可以將可見性與您的mode屬性綁定,並創建特定的IValueConverter以將模式轉換爲適當的可見性值。即:

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

通常我的WPF對話框都是在Popup中顯示的所有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> 

我刪除了很多的風格,使這個更容易閱讀,但你可以看到它是如何放在一起的總體思路。我的視圖模型通常包含IsPopupVisiblePopupContent,並PopupHeader性質,和命令PopupSaveCommandPopupCancelCommand

我在大多數情況下使用my own custom popup,雖然同樣的事情可以用一個WPF彈出來完成。