在WPF MVVM应用程序中,MultiBindingConvertor无法在网格上工作

| 我在WPF Telerik网格中有一列,我需要基于两点进行限制。 在ViewModel上的IsEditable属性和在网格上绑定到的List属性的IsManualChange属性... 我编写了一个MultiBoolConvertor来处理此问题,并在WPF中实现如下:
<telerik:GridViewComboBoxColumn 
    Header=\"Selection\" 
    DataMemberBinding=\"{Binding HandHeldDifference.GRSSelection}\" 
    ItemsSource=\"{Binding Path=SelectionOptions}\">
    <telerik:GridViewComboBoxColumn.IsReadOnly>
        <MultiBinding Converter=\"{StaticResource MultiBoolConv}\" 
            ConverterParameter=\"True\">
            <Binding 
                RelativeSource=\"{RelativeSource FindAncestor, 
                    AncestorType={x:Type StackPanel}}\" 
                Path=\"DataContext.IsEditable\" />
            <Binding Path=\"IsManualChange\" />
        </MultiBinding>
    </telerik:GridViewComboBoxColumn.IsReadOnly>
</telerik:GridViewComboBoxColumn>
但是,进入Converter的值是bool(来自ViewModel)和IsManualChange的DependencyProperty.UnsetValue!
public object Convert(object[] values, 
                        Type targetType, 
                        object parameter, 
                        CultureInfo culture)
{
    var defaultReturn = false;
    if (parameter != null)
    {
        bool.TryParse(parameter.ToString(), out defaultReturn);
    }

    if (values == null) return defaultReturn;
    if (values.Length < 2) return defaultReturn;
    if (values[0] is bool && values[1] is bool)
    {
        return ((bool) values[0]) && ((bool) values[1]);
    }
    return defaultReturn;
}
第二个值显然无法通过“ values [1]是布尔值”比较 有一个线索可能是该转换器仅被调用一次,而不是我所期望的每行调用一次。 有谁知道我该如何工作呢?     
已邀请:
        在传递DataContext之前,您将获得DependencyProperty.UnsetValue并需要处理这种情况。因此,您可以执行以下操作:
bool isManualChange= (value[1] is bool) ? (bool)value[1] : false; // or true depending on which should be the default
从上面的链接:   UnsetValue是一个前哨值,它是   用于WPF的方案   财产制度无法确定   请求的DependencyProperty值。   使用UnsetValue而不是null,   因为null可能是有效的属性   值,以及有效的(和   常用)DefaultValue。 因此,基本上,DataContext当前为null,因此它找不到名为
IsManualChange
的属性,因此您获得UnsetValue。 设置上下文后,您的转换器应再次被调用。     
        事实证明,Telerik网格将IsReadOnly绑定到ViewModel,并且要绑定到ItemsSource中的项目时必须使用IsReadOnlyBinding!     

要回复问题请先登录注册