我在理解WPF數據綁定的基礎知識時遇到了問題。我有一個泛型DataGrid(AutoGenerateColumns設置)綁定到一個DataTable列名稱隨每個負載而不同。當dataTable包含布爾類型的列時,我想渲染一個包含表示true和false的自定義圖像的列。WPF通用DataGrid CellTemplate - 綁定到單元格值?
要做到這一點,我有一個靜態資源的celltemplate在頁面上宣佈,我有捕獲該AutoGenerateColumn事件,並使用該模板的C#代碼:
<DataTemplate x:Key="CheckmarkColumnTemplate">
<Image x:Name="CheckmarkImage" Source="..\..\images\check.png" Height="16" Width="16" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Value}" Value="False">
<Setter TargetName="CheckmarkImage" Property="Source" Value="..\..\images\nocheck.png" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
C#代碼:
private void dgData_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyType == typeof(bool))
{
DataGridTemplateColumn col = new DataGridTemplateColumn();
Binding binding = new Binding(e.PropertyName);
col.CellTemplate = (this.Resources["CheckmarkColumnTemplate"] as DataTemplate);
col.Header = e.PropertyName;
e.Column = col;
}
}
這主要是工作,除了我有DataTrigger綁定屬性搞砸了。它從不檢測列的值是否爲「false」,所以它從不顯示nocheck.png圖像。我不知道如何編寫Binding屬性,以便引用列的數據綁定值(請記住,列名每次都不相同,因此我無法在綁定的Path部分中對列名進行硬編碼) 。
任何人都可以告訴我什麼Binding屬性應該看起來像只是抓住列的值?
我需要你的幫助。我們可以在[中文聊天室](http://chat.stackexchange.com/rooms/12811/chinese-language)進行對話嗎?請在那裏提及我的名字。謝謝。 (◠‿◠) – 2014-12-12 16:10:33