6

Bir Silverlight 4 sayfasında dört veri kümem var. Her ızgara için farklı sütun başlığı stilleri ayarlamaya çalışıyorum. Dört başlıklarına uygulayarak,XamlParseException oluştu: 'PhoneMasterGridColumnHeader' metinden 'System.Windows.Style' oluşturulamadı

Ben ayrı bir kaynak sözlükte koymak ve yukarıda belirtilen etiketlerini kaldırmak
<Style TargetType="primitives:DataGridColumnHeader" > 
    <Setter Property="Template"> 
     <Setter.Value> 
     <ControlTemplate TargetType="primitives:DataGridColumnHeader"> 
      <Grid Name="Root"> 
      <vsm:VisualStateManager.VisualStateGroups> 
       <vsm:VisualStateGroup x:Name="SortStates" > 
       <vsm:VisualStateGroup.Transitions> 
        <vsm:VisualTransition GeneratedDuration="00:00:0.1" /> 
       </vsm:VisualStateGroup.Transitions> 
       <vsm:VisualState x:Name="Unsorted" /> 
       <vsm:VisualState x:Name="SortAscending"> 
        <Storyboard> 
        <DoubleAnimation Storyboard.TargetName="SortIcon" Storyboard.TargetProperty="Opacity" Duration="0" To="1.0" /> 
        </Storyboard> 
       </vsm:VisualState> 
       <vsm:VisualState x:Name="SortDescending"> 
        <Storyboard> 
        <DoubleAnimation Storyboard.TargetName="SortIcon" Storyboard.TargetProperty="Opacity" Duration="0" To="1.0" /> 
        <DoubleAnimation Storyboard.TargetName="SortIconTransform" Storyboard.TargetProperty="ScaleY" Duration="0" To="-.9" /> 
        </Storyboard> 
       </vsm:VisualState> 
       </vsm:VisualStateGroup> 
      </vsm:VisualStateManager.VisualStateGroups> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="*" /> 
       <RowDefinition Height="*" /> 
       <RowDefinition Height="Auto" /> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto" /> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="Auto" /> 
      </Grid.ColumnDefinitions> 
      <Rectangle x:Name="BackgroundRectangle" Stretch="Fill" Grid.ColumnSpan="2" Grid.RowSpan="2"> 
       <Rectangle.Fill> 
       <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
        <GradientStop Color="Transparent" Offset="0" /> 
        <GradientStop Color="LavenderBlush" Offset="1" /> 
       </LinearGradientBrush> 
       </Rectangle.Fill> 
      </Rectangle> 
      <ContentPresenter Grid.RowSpan="2" Content="{TemplateBinding Content}" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" /> 
      <Rectangle Name="VerticalSeparator" Grid.RowSpan="2" Grid.Column="2" Width="1" VerticalAlignment="Stretch" Fill="{TemplateBinding SeparatorBrush}" Visibility="{TemplateBinding SeparatorVisibility}" /> 
      <Path Grid.RowSpan="2" Name="SortIcon" RenderTransformOrigin=".5,.5" HorizontalAlignment="Left" VerticalAlignment="Center" Opacity="0" Grid.Column="1" Stretch="Uniform" Width="8" Data="F1 M -5.215,6.099L 5.215,6.099L 0,0L -5.215,6.099 Z "> 
       <Path.Fill> 
       <SolidColorBrush Color="#FF444444" /> 
       </Path.Fill> 
       <Path.RenderTransform> 
       <TransformGroup> 
        <ScaleTransform x:Name="SortIconTransform" ScaleX=".9" ScaleY=".9" /> 
       </TransformGroup> 
       </Path.RenderTransform> 
      </Path> 
      </Grid> 
     </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    </Style> 

, o da çalışır: Ben <sdk:DataGrid.ColumnHeaderStyle> etiketlerinin içinde her DataGrid gömün çalışır bu XAML bulundu. Ben kaynak sözlükte bunun belirli bir sürümünü oluşturmak çalışıyorum ama bu ilk satırı değiştirirken Ama:

<Style x:Key="ADGridColumnHeader" TargetType="primitives:DataGridColumnHeader" > 

ve DataGrid için bu ekleme:

ColumnHeaderStyle="PhoneMasterGridColumnHeader" 

hatayı alıyorum: XamlParseException oluştu: 'PhoneMasterGridColumnHeader' metninden 'System.Windows.Style' oluşturulamadı. Neyin yanlış olduğunu anlayamıyorum. Ben hala Stiller ve Kaynak Sözlükleri ile kavrama almak için mücadele ediyorum. Herhangi bir fikir?

cevap

7

böyle Deneyin: -

ColumnHeaderStyle="{StaticResource PhoneMasterGridColumnHeader}" 

ColumnHeaderStyle özellik türü Style bir nesne almayı bekliyor.

<DataGrid.ColumnHeaderStyle> 
    <Style TargetType="primitives:DataGridColumnHeade"> 
     <!-- You setters here --> 
    </Style> 
</DataGrid> 

Yoksa bazı bizare nedenle tarzı ızgara için geçerli DataContext bir ViewModel üzerinde HeaderStyle adlı bir özellik olarak ortaya olabilir: - -: Artık böyle bu değeri tanımlayabiliriz

<DataGrid ColumnHeaderStyle="{Binding HeaderStyle}" > 

Buradaki nokta, Xaml'de özellik değerlerinin birkaç farklı yolla elde edilebileceğidir. Bir kaynağa başvurmak bunlardan sadece bir tanesidir. Dolayısıyla, sadece ColumnHeaderStyle="MyStyle" belirtmek en azından belirsizdir, bu yüzden değeri statik kaynaklar aracılığıyla elde etmek istediğimiz durumu açıklamamız gerekir.

+0

Bunlardan ilki çözüldü. Çok teşekkürler. – serialhobbyist

İlgili konular