2016-09-06 25 views
2

我已經創建了下面的風格爲DataGrid DataGridCheckBoxColumn:如何爲DataGridCheckBoxColumn創建通用編輯樣式?

<Style x:Key="TextColumnEditStyle" TargetType="TextBox"> 
    <Setter...> 
    <Setter...> 
</Style> 

然後在DataGrid中:

<DataGridCheckBoxColumn EditingElementStyle="{StaticResource TextColumnEditStyle}"...> 

這工作正常。

有沒有辦法讓上面的更通用的風格,目標DataGridCheckBoxColumn,所以我不必將風格分配給每個DataGridCheckBoxColumn?

我曾嘗試以下,但它沒有任何效果:

<Style TargetType="DataGridCheckBoxColumn"> 
    <Setter...> 
    <Setter...> 
</Style> 

...然後刪除樣式分配:

<DataGridCheckBoxColumn ...> 
+0

根據你的代表,我確定你知道你可以把它放在一個方法中,併爲每一列打出方法,而不是單獨打印。 AFAIK,默認情況下無法設置它。不過,這是一個有趣的問題。我會保持我的眼睛在這裏剝皮。 –

回答

2

您可以創建這個樣式設置爲自定義列它,然後而不是添加DataGridCheckBoxColumn您可以添加您自己的自定義列,並將應用您的樣式

創建一個新列說MyColumn所以MyColumn.xaml看起來

<DataGridCheckBoxColumn x:Class="TestApp.MyColumn" 
      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" 
      xmlns:local="clr-namespace:TestApp" 
      EditingElementStyle="{StaticResource TextColumnEditStyle}" 
      mc:Ignorable="d"/> 

MyColumn.xaml.cs看起來像

public partial class MyColumn : DataGridCheckBoxColumn 
{ 
    public MyColumn() 
    { 
     InitializeComponent(); 
    } 
} 

,然後你使用網格可以這樣使用它

<Grid> 
    <DataGrid ItemsSource="{Binding Items}"> 
     <DataGrid.Columns> 
      <local:MyColumn Binding="{Binding .}"/> 
     </DataGrid.Columns> 
    </DataGrid> 
</Grid> 

您可以在資源創建TextColumnEditStyle認爲,將被新的自定義列使用。

+0

這不是我所做的嗎?如果不是,你能展示一個代碼示例嗎? – 4thSpace

+0

我會更新我的答案 – Muds

相關問題