2013-09-27 45 views
0

我有一個包含數據網格的WPF應用程序。我正在嘗試向三角形形狀的數據頭添加切換按鈕。形狀應指向右側,然後單擊顯示行細節,箭頭應指向下方。WPF Datagrid將按鈕添加到數據搜索框

<!-- The data grid to display orders--> 
     <DataGrid DataContext="{Binding OrderBlock}" 
        x:Name="dataGridOrders" 
        ItemsSource="{Binding Orders}" 
        Style="{StaticResource DataGridTemplate}" 
        ColumnHeaderStyle="{StaticResource DG_ColumnHeader}"      
        RowHeaderStyle="{StaticResource DG_RowHeader}" 
        RowStyle="{StaticResource DG_Row}" 
        CellStyle="{StaticResource DG_Cell}"      
        RowDetailsTemplate="{StaticResource DG_RowDetail}"      
        AutoGenerateColumns="False" 
        HorizontalAlignment="Stretch" 
        VerticalAlignment="Stretch" 
        Background="Silver" 
        RowHeaderWidth="30"      
        Margin="25,5,20,15"> 


<!-- Data Grid row header template --> 
    <Style x:Key="DG_RowHeader" TargetType="{x:Type DataGridRowHeader}"> 
     <Setter Property="Width" Value="35"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type DataGridRowHeader}"> 
        <Border x:Name="DGRH_Border" 
          BorderBrush="{TemplateBinding BorderBrush}" 
          BorderThickness="{TemplateBinding BorderThickness}" 
          SnapsToDevicePixels="True"> 
         <Border.Background> 
          <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> 
           <GradientStop Offset="0" Color="LightGray"/> 
           <GradientStop Offset="1" Color="WhiteSmoke"/> 
          </LinearGradientBrush> 
         </Border.Background> 
        </Border>       
       </ControlTemplate>       
      </Setter.Value> 
     </Setter> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <DataTemplate> 
        <TextBlock Text="M"/> 
       </DataTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
+0

什麼又是這個問題嗎? – meilke

+0

如何將切換按鈕添加到數據網格中的一行 – mHelpMe

+0

Wheres the button? – Shoe

回答

1

你可以使用具有一個切換按鈕,像這樣的行標題控件模板:

<Style x:Key="DG_RowHeader" TargetType="{x:Type DataGridRowHeader}"> 
     <Setter Property="Width" Value="35"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type DataGridRowHeader}"> 
        <ToggleButton Content="button" x:Name="btn"/> 
        <ControlTemplate.Triggers> 
         <DataTrigger Value="True"> 
          <DataTrigger.Binding> 
           <Binding ElementName="btn" Path="IsChecked"></Binding> 
          </DataTrigger.Binding> 
          <DataTrigger.Setters> 
           <Setter Property="Content" TargetName="btn" Value="-"/> 
          </DataTrigger.Setters> 
         </DataTrigger> 
         <DataTrigger Value="False"> 
          <DataTrigger.Binding> 
           <Binding ElementName="btn" Path="IsChecked"></Binding> 
          </DataTrigger.Binding> 
          <DataTrigger.Setters> 
           <Setter Property="Content" TargetName="btn" Value="+"/> 
          </DataTrigger.Setters> 
         </DataTrigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
+0

非常感謝Uma確實有效。我遇到的唯一輕微問題是將原本位於DG_RowHeader樣式中的邊框放在哪裏?因爲現在不應用LinearGradientBrush。 – mHelpMe

+0

切換按鈕可以放置在邊框內,您必須使切換按鈕透明的背景能夠看到border.background。另一種選擇是 - 使用LinearGradientBrush直接設置ToggleButton的背景,而不是使用邊框。 –