我在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的文件集合中添加任何占位符文件为零。)
答案 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