我已經使用MVVM模式創建了一個WPF桌面應用程序。作爲這項工作的一部分,我創建了一個包含許多對話窗口的命名空間,dialogViewModels和dialogViews。對話框窗口通常顯示其中一個dialogViews,具體取決於所分配的dialogViewModel。我想重用一個WPF UserControls庫 - 如何設置樣式?
我現在想要這個命名空間中的意見和的ViewModels轉換爲一個單獨的庫,這樣我就可以重新使用在其他應用程序的對話框。但是,我有兩個問題:
- 如何在我的usercontrols上設置樣式,以便在不同的應用程序中使用庫時,它會使用該應用程序中的樣式。
- 重新使用庫時,我能否覆蓋庫控件中的數據模板賦值?
一些代碼來說明我的觀點:
<Window x:Class="FeehandlerMain.Dialogs.OKDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="{Binding Path=DialogTitle}"
Height="200" Width="400" ResizeMode="NoResize" ShowInTaskbar="False" Topmost="True" WindowStartupLocation="CenterOwner" SizeToContent="Height">
<Window.Resources>
<DataTemplate DataType="{x:Type dialogs:MessageBoxDialogViewModel}">
<dialogs:MessageBoxDialogView />
</DataTemplate>
</Window.Resources>
<Border Style="{StaticResource StandardBorderStyle}" >
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ContentControl Content="{Binding}"
Grid.Column="0" Grid.Row="0" />
<StackPanel Orientation="Horizontal"
Grid.Column="0" Grid.Row="1">
<Button Content="OK" IsDefault="True" IsCancel="True"
Style="{StaticResource StandardButtonStyle}"/>
</StackPanel>
</Grid>
</Border>
</Window>
問題1是關於使用StandardBorderStyle
和StandardButtonStyle
。這些樣式目前在我的App.xaml文件中的<Application.Resources>
下定義。如果我把對話在圖書館,我引用該庫從一個新的應用程序,我如何才能獲得使用StandardBorderStyle
和StandardButtonStyle
對話框從新的應用程序,這樣每個應用程序可以定義它自己的視覺風格?
問題2是關於DataTemplates
。這些模板用於根據分配給Dialog的DataContext的ViewModel的類型,爲對話框(在上例中插入爲ContentControl
元素)選擇適當的視圖。在我想使用與不同的查看方式時,我能否在重新使用庫時覆蓋上面的DataTemplate?
哦,我知道這是兩個問題,但你仍然只會得到名聲一個答案,對不起! ;-)