2017-06-29 27 views
0

我从类库启动WPF窗口。我的XAML的风格是这样的:为什么不应用使用MahApps.Metro的DataGridCheckBoxColumn样式? WPF

<Controls:MetroWindow x:Class="AeonPlanter.UI.Window" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:local="clr-namespace:AeonPlanter.UI" 
     xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro" 
     mc:Ignorable="d" d:DesignWidth="400" Background="White" Width="400" Height="447.333" Loaded="MetroWindow_Loaded" ResizeMode="NoResize" WindowStartupLocation="CenterScreen" Title="AeonPlanter" EnableDWMDropShadow="True"> 
<Controls:MetroWindow.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! --> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" /> 
      <!-- Accent and AppTheme setting --> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Controls:MetroWindow.Resources> 
<DataGrid x:Name="dtg_InventoryItems" HorizontalAlignment="Left" Margin="10,208,0,0" VerticalAlignment="Top" Width="360" Height="150" AutoGenerateColumns="False"> 

       <DataGrid.Columns> 
        <DataGridCheckBoxColumn Binding="{Binding RelativeSource={RelativeSource AncestorType=DataGridRow}, Path=PlantItem, Mode=OneWay}" 
              ClipboardContentBinding="{x:Null}" 
              Header="Plant" 
              Width="58" 
              ElementStyle="{DynamicResource MetroDataGridCheckBox}" 
              EditingElementStyle="{DynamicResource MetroDataGridCheckBox}" CanUserReorder="False" CanUserResize="False" CanUserSort="False" /> 

        <DataGridTextColumn Binding="{Binding ItemName}" CanUserResize="False" ClipboardContentBinding="{x:Null}" Header="Name" Width="*" IsReadOnly="True"/> 
        <DataGridTextColumn Binding="{Binding ItemId}" CanUserResize="False" ClipboardContentBinding="{x:Null}" Header="ID" IsReadOnly="True" Width="58"/> 
        <Controls:DataGridNumericUpDownColumn Binding="{Binding PlantAmount}" Header="Plant X" Width="70" CanUserReorder="False" CanUserResize="False" CanUserSort="False"/> 
       </DataGrid.Columns> 
      </DataGrid> 

现在的问题是,该复选框列有默认的样式,而不是地铁,尽管设计者它正确地显示它。

我还增加了以下样式数据网格:

<Style TargetType="DataGrid" BasedOn="{StaticResource {x:Type DataGrid}}" /> 

,但没有运气。

任何想法为什么会发生这种情况?

回答

1

使用{StaticResource}标记扩展:

<DataGridCheckBoxColumn ... 
        ElementStyle="{StaticResource MetroDataGridCheckBox}" 
        EditingElementStyle="{StaticResource MetroDataGridCheckBox}" 

或者在你的App.xaml文件合并资源字典:

<Application x:Class="AeonPlanter.UI.App" 
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
       StartupUri="Window.xaml"> 
    <Application.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! --> 
       <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> 
       <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> 
       <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" /> 
       <!-- Accent and AppTheme setting --> 
       <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" /> 
       <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" /> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </Application.Resources> 

</Application> 
+1

谢谢你,成功了! –