2014-01-29 32 views
0

我想在我的WPF項目的DataGrid中的特定字段使用IValueConverter。我發現轉換器從不被調用,即使DataGrid是在數據到達時填充的。DataGrid轉換器不叫

我有以下代碼:

<UserControl.Resources> 
    <sol:RfidConverter x:Key="rfidConverter" /> 
</UserControl.Resources> 
... 
<DataGrid AutoGenerateColumns="False" Name="TagGrid" VerticalAlignment="Stretch" ItemsSource="{Binding}"> 
    <DataGrid.Columns> 
     <DataGridTextColumn IsReadOnly="True" Header="Tag ID" Width="200" Binding="{Binding Rfid, Converter={StaticResource rfidConverter}}"></DataGridTextColumn> 
     <DataGridCheckBoxColumn Header="Delete" Width="Auto" Binding="{Binding ToDelete}"></DataGridCheckBoxColumn> 
    </DataGrid.Columns> 
</DataGrid> 

而在C#:

// Tags is an ObservableCollection<Tag> 
TagGrid.DataContext = a.GetActiveItem<Project>().Tags; 

我的轉換代碼:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
{ 
    string val = ((Int64)value).ToString("x").PadLeft(8, '0'); 
    return val; 
} 

我覺得這是一個簡單的答案,爲什麼我的轉換器沒有被調用。我在開始「string val = ...」的行上設置了一個斷點,並且斷點從未被命中,即使空白條目添加到了我的DataGrid中。這是我的第一個WPF項目。非常感謝幫助。謝謝!

+0

好吧,就是這樣。太感謝了。 – user2434237

+0

@ bogza.anton,請將您的評論添加到答案中,以便將此問題設置爲已回答。如果你可以添加更多的解釋來幫助未來的用戶,這將不勝感激。非常感謝。 – Sheridan

回答

0

我已經複製你的例子。綁定和轉換工作被執行。重新檢查字段名稱綁定(Rfid)。