Styles.xaml を含む Silverlight 5 プロジェクトと、実行時に DataGrid を作成する別のクラスがあります。ある種のフィルター機能を実現するために、DataGridColumnHeader にボタンが必要です。スタイルは次のように定義されています。
<Style x:Key="DataGridFilterStyle" TargetType="sdk:DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Grid Height="{TemplateBinding Height}" Width="Auto">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Margin="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TextBlock Text="{Binding}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0.2"/>
<Button Content="Foo" Margin="5,0" x:Name="filter" />
</StackPanel>
</Grid>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
次に、実行時に DataGrid を生成します。一般的なため、親ページがわかりません:
dg = New DataGrid
dg.AutoGenerateColumns = False
dg.RowHeight = 28
' Doing some stuff here....
dg.ColumnHeaderStyle = Application.Current.Resources("DataGridFilterStyle")
gd.Children.Add(dg) ' gd is a Grid as a parent container
そのため、Styles.xaml と、いくつかのイベントを行う別のクラスがあります。DataGridColumnHeader (フィルター) のボタンにクリック イベントを追加するにはどうすればよいですか? 通常、スタイルとコードが同じファイルにあれば問題ありません。
助けてくれてありがとう!
よろしく
ダニエル