2016-02-23 45 views
2

在我的Prism 6 WPF模塊化應用程序中,我使用名爲'CommonControlLibrary'的WPF ControlLibrary項目,它具有包含ResourceDictionary的'SwitchButtonStyle.xaml'文件。ResourceDictionary用於我的應用程序中的RadioButton的樣式。下面是我的應用程序結構:如何使用單獨的WpfControlLibrary中的ResourceDictionary將樣式設置爲Prism 6模塊中的RadioButton?

enter image description here

下面我部分顯示的ResourceDictionary。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
       xmlns:local="clr-namespace:CommonControlLibrary" 
       xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
       mc:Ignorable="d" 
       xmlns:ed="http://schemas.microsoft.com/expression/2010/drawing" > 

<!--Style for view-switching radiobuttons--> 
<Style x:Key="MainViewRadioButtonStyle" TargetType="RadioButton"> 
    <Setter Property="Background" Value="{x:Null}"/> 
    <Setter Property="Foreground" Value="#FF483D8B"/> 
    <Setter Property="Padding" Value="3"/> 
    <Setter Property="BorderThickness" Value="1"/> 
    <Setter Property="FontSize" Value="12"/> 
    <Setter Property="BorderBrush" Value="#FF6A5ACD" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="RadioButton"> 
       <Grid> 
    . . . . . . . . . . . . . . . . 

我的應用程序'授權'和'校準'中有兩個棱鏡6模塊(見上圖)。每個模塊都有相應的View和RadioButton來切換到該View。下面我顯示XAML爲單選按鈕切換爲「校準」景觀:

<UserControl x:Class="Calibration.Views.CalibrationNavigationItemView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:prism="http://prismlibrary.com/" 
     xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
     prism:ViewModelLocator.AutoWireViewModel="True"> 
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 

    <RadioButton GroupName="MainNavigation" IsChecked="{Binding Path=IsChecked, Mode=TwoWay}" 
       AutomationProperties.AutomationId="CalibrationRadioButton"> 
     Calibration 
     <i:Interaction.Triggers> 
      <i:EventTrigger EventName="Checked"> 
       <prism:InvokeCommandAction Command="{Binding NavigateToCalibrationCommand}"/> 
      </i:EventTrigger> 
     </i:Interaction.Triggers> 
    </RadioButton> 
</Grid> 

這兩個單選按鈕是相同的在XAML,需要它們中的每與來自ResourceDistionary MainViewRadioButtonStyle即在「SwitchButtonStyle.xaml即設置樣式在'CommonControlLibrary'中。如何在每個RadioButton的XAML中包含對ResourceDictionary的引用,以將「MainViewRadioButtonStyle」樣式應用於Prism 6模塊中的RadioButton?請給我看看'Calibration'RadioButton XAML的例子。

回答

0

1)在視圖的頂部添加XAML代碼合併資源字典:

<UserControl.Resources> 

    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 

      <ResourceDictionary Source="pack://application:,,,/CommonControlLibray;component/SwitchButtonStyle.xaml" /> 

2)添加樣式屬性,你的單選按鈕:

<RadioButton Style={StaticResource MainViewRadioButtonStyle}" ... 

添加單選按鈕的隱式樣式:

<Style TargetType="RadioButton" BasedOn="{StaticResource MainViewRadioButtonStyle}" /> 

隱式風格將被應用到所有單選按鈕在視圖上

+0

我照你說,但在線路:「」有錯誤報告:「沒有對CommonControlLibray程序集的引用」。 –

+0

先生們,請幫助解決問題! –

+0

可能是我必須單選按鈕XAML包括CommonControlLibrary某種程度上爲「的xmlns:......」,只有後,使用由unkreativ編寫XAML代碼? –

相關問題