Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用IMultiValueConverter绑定到DataGridColumn会遇到问题,而使用类似的IValueConverter则不会_C#_.net_Wpf_Datagrid_Imultivalueconverter - Fatal编程技术网

C# 使用IMultiValueConverter绑定到DataGridColumn会遇到问题,而使用类似的IValueConverter则不会

C# 使用IMultiValueConverter绑定到DataGridColumn会遇到问题,而使用类似的IValueConverter则不会,c#,.net,wpf,datagrid,imultivalueconverter,C#,.net,Wpf,Datagrid,Imultivalueconverter,我有两个Datagrid复选框列,每个列都有一个绑定 <DataGrid ItemsSource="{Binding}" Name="DataGrid1" DataContext="{Binding Source={StaticResource TableViewSource}}"> <DataGridCheckBoxColumn Header="Required" Width="50" MinWidth="50"> <

我有两个Datagrid复选框列,每个列都有一个绑定

    <DataGrid ItemsSource="{Binding}" Name="DataGrid1" DataContext="{Binding Source={StaticResource TableViewSource}}">
        <DataGridCheckBoxColumn Header="Required" Width="50" MinWidth="50">
            <DataGridCheckBoxColumn.Binding>
                <Binding Path="Required" Converter="{StaticResource DateTimeToBooleanConverter}"/>
            </DataGridCheckBoxColumn.Binding>
        </DataGridCheckBoxColumn>
        <DataGridCheckBoxColumn Header="Required Test" Width="60" MinWidth="60">
            <DataGridCheckBoxColumn.Binding>
                <MultiBinding Converter="{StaticResource DateTimeToBooleanMultiverter}">
                    <Binding Path="Required_Date" />
                    <Binding Path="Required_Time" />
                </MultiBinding>
            </DataGridCheckBoxColumn.Binding>
        </DataGridCheckBoxColumn>
    </DataGrid>
在最后一列中,我想将日期和时间保存到两个不同的字段中
“Required\u date”
“Required\u time”(String)
。创建了以下
IMultiConverter
来处理它:

public class DateTimeToBooleanMultiverter : IMultiValueConverter
{

public object Convert(object[] values, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
    if (values[0] != null) {
        return true;
    } else {
        return false;
    }
}

public object[] ConvertBack(object value, System.Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
    if (value != null) {
        if (value == true) {
            return {
                System.DateTime.Now.Date,
                System.DateTime.Now.TimeOfDay.ToString()
            };
        }
    }
    return {
        null,
        null
    };
}
}
在初始荷载下,立柱看起来良好。该列已选中所有适当的单元格。但是,当值被选中/取消选中时,我会得到以下绑定错误

System.Windows.Data Error: 5 : Value produced by BindingExpression is not valid for target property.; Value='True' MultiBindingExpression:target element is 'DataGridCell' (Name=''); target property is 'CellContent' (type 'String')
此外,当我取消选中一个单元格时,它没有正确地取消选中,我通过转换器中的一些断点注意到值作为
dependencProperty.Unset
(可能是由于绑定警告)

(9-30-12) 我在codeplex评论中发现了一个更有希望的线索:

“多重绑定不起作用的原因是 DataGridHelper.UpdateSource使用GetBindingExpression而不是 GetBindingExpressionBase。如果更改为多优先级 绑定应该起作用。”

我试图将更新设置为
Explicit
,并创建一个调用
BindingBaseExpression
进行更新的
DataGrid\u EndCellEdit
事件,但我认为DataGrid列忽略了更新选项

(10-12-12) 仍然不走运,我尝试使用
BindingBaseExpression
,但没有成功。显然,
IMultiValueCOnverter
绑定做了一些奇怪的事情

System.Windows.Data Error: 5 : Value produced by BindingExpression is not valid for target property.; Value='True' MultiBindingExpression:target element is 'DataGridCell' (Name=''); target property is 'CellContent' (type 'String')