2017-05-30 56 views
0

我在GridView(A)内部有一个GridView(B)。 GridView-A的样式与GridView-B的样式不同,但是当我的GridView-B继承GridView-A的所有样式时会出现问题。另一个网格内的网格样式

我不希望发生这种情况。

是他们的任何方式,我只能在xaml中实现这一点吗?

+3

你有任何代码可以显示吗?这样只有人可以帮你 –

+2

我不认为GridView B继承了A的风格。您可能已经指定了所有GridView将使用的通用样式。 Gridview在Gridview B以外有不同的风格吗? (这很让人困惑) –

+2

(当然,你可以为GridView B指定一个特定的样式,然后去GridView Id =“GridViewB”Style =“{StaticResource bGridViewStyle}”>') –

回答

0

只要按照下面的步骤,让我知道你是否有任何问题。在这些之中,你已经知道了。可能是你想念什么。

1)将ResourceDictionary添加为样式表。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:local="clr-namespace:XYZApplication"> 
<!-- Style 1--> 
    <Style x:Key="GridStyle1" TargetType="{x:Type Grid}"> 
     <Setter Property="Background" Value="BlanchedAlmond"></Setter> 
     <Setter Property="Margin" Value="1,1,1,1"></Setter> 
    </Style> 
<!-- Style 2--> 
    <Style x:Key="GridStyle2" TargetType="{x:Type Grid}"> 
     <Setter Property="Background" Value="Aqua"></Setter> 
     <Setter Property="Margin" Value="5,5,5,5"></Setter> 
    </Style> 
</ResourceDictionary> 

2)添加资源文件到您的用户控件/窗口如下...

<UserControl x:Class="XYZApplication.Views.Payment" 
      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:XYZApplication.Views" 
      mc:Ignorable="d"> 

<UserControl.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="../Style/Styles.xaml"/> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </UserControl.Resources> 
</UserControl> 

3)使用这些特定的样式来指定网格中的用户控件/窗口

<Grid Style="{StaticResource GridStyle1}"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"></ColumnDefinition> 
      <ColumnDefinition Width="Auto"></ColumnDefinition> 
      <ColumnDefinition Width="Auto"></ColumnDefinition> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"></RowDefinition> 
      <RowDefinition Height="Auto"></RowDefinition> 
      <RowDefinition Height="Auto"></RowDefinition> 
     </Grid.RowDefinitions> 
     <Grid Grid.Column="1" Grid.Row="1" Style="{StaticResource GridStyle2}" > 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"></ColumnDefinition> 
      <ColumnDefinition Width="Auto"></ColumnDefinition> 
      <ColumnDefinition Width="Auto"></ColumnDefinition> 
      <ColumnDefinition Width="Auto"></ColumnDefinition> 
      <ColumnDefinition Width="Auto"></ColumnDefinition> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
       <RowDefinition Height="Auto"></RowDefinition> 
       <RowDefinition Height="Auto"></RowDefinition> 
      </Grid.RowDefinitions> 
     <Label Grid.Column="0" Grid.Row="0">Bank Name</Label> 
      <Label Grid.Column="1" Grid.Row="0">Branch</Label> 
      <Label Grid.Column="2" Grid.Row="0">Account holder</Label> 
      <Label Grid.Column="3" Grid.Row="0">Account Number</Label> 
      <Label Grid.Column="4" Grid.Row="0">Balance</Label> 
      <Label Grid.Column="0" Grid.Row="1">Bank of ...</Label> 
      <Label Grid.Column="1" Grid.Row="1">...Branch</Label> 
      <Label Grid.Column="2" Grid.Row="1">My Name</Label> 
      <Label Grid.Column="3" Grid.Row="1">Account Number 123</Label> 
      <Label Grid.Column="4" Grid.Row="1">1 billion</Label> 
     </Grid> 
    </Grid> 

您也可以在后面的代码中添加这两种样式。 希望它有帮助!

0

您应该明确定义gridviews的样式。在WPF中,子控件继承父控件的属性,可能是你有这个问题。您可能已经为gridviewA定义了样式,而不是为gridviewB定义了样式,或者您为所有gridview使用了相同的样式。如果你可以分享代码,我可以告诉你究竟是什么问题。