2012年6月30日土曜日

[WPF]Blendと連携の謎

XAMLをいじってStyleなんかを設定した後、
Blendで開くとエラーがあります的な感じになってしまって
表示できない場合がある。


これってなぜなんでしょう?
とりあえず、Styleをリソースに変換して設定すると回避できるっぽい。

<DataGrid x:Name="NameList" AutoGenerateColumns="False"
          HorizontalAlignment="Left" Margin="10,10,0,0" 
          VerticalAlignment="Top" IsReadOnly="True"> 

    <DataGrid.CellStyle>
        <Style TargetType="DataGridCell">
           <Style.Triggers>
               <Trigger Property="IsFocused" Value="True">
                   <Setter Property="Background" Value="Black"/>
                   <Setter Property="Foreground" Value="White"/>
               </Trigger>
               <Trigger Property="IsSelected" Value="True">
                   <Setter Property="Background" Value="DarkGray"/>
                   <Setter Property="Foreground" Value="White"/>
               </Trigger>
            </Style.Triggers>
        </Style>
    </DataGrid.CellStyle>
</DataGrid>
こいつをこんな風に変えてみた。
<Window.Resources>
 <Style x:Key="DataListCellStyle" TargetType="{x:Type DataGridCell}">
  <Style.Triggers>
   <Trigger Property="IsFocused" Value="True">
    <Setter Property="Background" Value="Black"/>
    <Setter Property="Foreground" Value="White"/>
   </Trigger>
   <Trigger Property="IsSelected" Value="True">
    <Setter Property="Background" Value="DarkGray"/>
    <Setter Property="Foreground" Value="White"/>
   </Trigger>
  </Style.Triggers>
 </Style>
</Window.Resources>

<DataGrid x:Name="NameList" AutoGenerateColumns="False"
  HorizontalAlignment="Left" Margin="10,10,0,0"
  VerticalAlignment="Top"
  ColumnHeaderStyle="{StaticResource DataListColumnHeaderStyle}"
  CellStyle="{StaticResource DataListCellStyle}">
</DataGrid>


これで、Blendでも表示できるようになった。

おそらく、Blendのお作法を間違っているんだと思われるけれど、
明確な理由が不明。

なぜだー。。。




0 件のコメント:

コメントを投稿