2013-07-28 24 views
4

在CellEditingTemplate中使用組合框時,單元格右側會顯示一個下拉箭頭。當您使用日期選擇器時,單元右側會顯示一個小壓光機。WPF DataGrid - > CellEditingTemplate所示圖標

創建CellEditingTemplate時,如何控制此區域顯示的內容?如果您使用自定義控件並希望在此區域顯示圖標,這將如何完成?

回答

1

您應該將此圖標添加到您的自定義用戶控件中。

例子:

比方說,我們有簡單的類人:

class Person 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 

,我們要創建自定義的控件來編輯的人的名字。

1)我們必須將圖標添加到我們的應用程序作爲資源(Build Action = Resource)。

在我的示例中,我創建了文件夾Images,並在那裏放置了圖標「user.png」。

enter image description here

2)在接下來的步驟中,我們創建自定義控制 「NameUserControl」:

<UserControl x:Class="WpfApplicationDataGrid.NameUserControl" 
      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" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="30" /> 
     </Grid.ColumnDefinitions>  

     <TextBox Text="{Binding Path=Name}" /> 
     <Image Source="/Images/user.png" Grid.Column="1" /> 
    </Grid> 
</UserControl> 

3)現在我們可以使用新的自定義用戶控件在CellEditingTemplate

<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="ID" Binding="{Binding ID}" /> 
     <DataGridTemplateColumn Header="Name"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding Name}" /> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
      <DataGridTemplateColumn.CellEditingTemplate> 
       <DataTemplate> 
        <local:NameUserControl /> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellEditingTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 

結果:

enter image description here

+0

謝謝,這正是我一直在尋找的! – Darren