当SelectedValue为0时WPF Combobox然后Combobox不应该选择

时间:2015-06-16 09:44:39

标签: c# wpf mvvm combobox selectedvalue

我在WPF应用程序中有一个组合框,并且实现了MVVM。看起来像, -

<ComboBox x:Name="cboParent" 
              SelectedValuePath="FileId"
                  DisplayMemberPath="FileName"
                  IsEditable="True"
                  ItemsSource="{Binding Files}"
                  MaxDropDownHeight="125"
              SelectedValue="{Binding Path=SelectedFile.ParentFileId}"
               SelectedItem="{Binding Path=SelectedParentFile, Mode=TwoWay}" Height="26"/>

文件集合具有 ParentFileId 的自引用键。现在有时这个ParentFileId将为零;意思是没有父文件。在这种情况下,我希望虽然下拉列表将包含所有文件,但不会有任何SelectedItem。

但实际上我将 SelectedFile 作为ComboBox中的SelectedItem。

当ParentFileId为零时,我可以获取没有选择任何内容的ComboBox吗?

(我不想在FileId的文件集合中添加任何占位符文件为零。)

1 个答案:

答案 0 :(得分:0)

首先,解释为什么这不能开箱即用:

-(void)update:(CFTimeInterval)currentTime { NSTimeInterval delta = currentTime - self.lastUpdateTime; self.lastUpdateTime = currentTime; // sanity check if(delta > 1) delta = 0; float distanceToMovePerSecond = 5.0f; float numberOfFramesPerSecond = 60.0f; float xPosition = ((distanceToMovePerSecond/numberOfFramesPerSecond) * delta) * 100; myNode0.position = CGPointMake(myNode0.position.x+xPosition, myNode0.position.y); 也是SelectedValue时,

null返回SelectedItem值。您的null属性是一个整数(我猜),它不支持ParentFileId值,并且无法知道您希望如何将null转换为整数值。因此Binding会抛出一个错误,并且数值在数据中保持不变。

您需要使用简单的转换器指定如何转换这些空值:

null

将其作为资源添加到您的视图中:

public class NullToZeroConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value.Equals(0))
            return null;
        else
            return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null)
            return 0;
        else
            return value;
    }
}

然后在<Grid ...> <Grid.Resources> <local:NullToZeroConverter x:Key="nullToZeroConverter" /> ... </Grid.Resources> ... </Grid> 绑定:

中使用它
SelectedValue