Xamarin表格:文本绑定枚举状态转换器问题



i创建一个按钮,其内容绑定状态,我初始化状态,但是按钮内容无法显示相应的文本,在调试模式下,我发现它似乎是执行的循环获得状态后,执行转换函数,然后直接跳至转换式(),然后再次返回转换()。

我在XAML文件中的代码是:

<ListView x:Name="myListView" ItemsSource="{Binding players}" HorizontalOptions="FillAndExpand" > 
      <ListView.ItemTemplate>
             <DataTemplate>
                   <ViewCell>
                       <Grid>                                                            
                           <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>                                                                                              
                                <ColumnDefinition Width="*"/>
                                 ...                                                                                                                                                                                 
                           </Grid.ColumnDefinitions>
                           <Button Grid.Column="0" Text="{Binding Status, Converter={StaticResource StatusToTextConverter}, Mode=TwoWay}" HorizontalOptions="CenterAndExpand"/>
                           <Button Grid.Column="1" Text="{Binding Status, Converter={StaticResource StatusToTextExConverter}, Mode=TwoWay}" HorizontalOptions="CenterAndExpand"/>
                           ...
                       </Grid>
                   </ViewCell>
             </DataTemplate>
      </ListView.ItemTemplate>

我的转换器是:

public class StatusToTextConverter: IValueConverter
{
    #region IValueConverter Members
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        var status = (EStatus)value;
        if (status == EStatus.YES)
        {            
            return "V";
        }
        else
        {
            return "";
        }
    }
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {            
        var text = (string)value;
        if (text == "V")
            return EStatus.YES;
        else
            return EStatus.NO;
    }
    #endregion
}

可能是引起循环的双重绑定模式。

您需要一种打破它的方法。

在其义务的视图模型属性中,检查新值是否与旧值相同,并且仅设置属性,则如果不同的属性更改。

从转换后删除实现

最新更新