我正在尝试将IValueConverter用于我的WPF项目中的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 :(得分:0)
我已经复制了你的例子。执行绑定和转换工作。重新检查字段名称绑定(Rfid)。