xamarin格式:文本绑定枚举状态转换器问题

问题描述:

我创建了一个按钮,它的内容绑定了一个状态,我初始化状态,但是按钮内容无法显示相应的文本,在调试模式下,我发现它似乎执行成了循环,获得状态后,执行Convert函数,然后直接跳到ConvertBack(),再次返回Convert()。xamarin格式:文本绑定枚举状态转换器问题

我在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 
} 

它可能双向的结合模式,是造成循环。

你需要一种方法来打破它。

在它绑定到的视图模型属性中,检查新值是否与旧值相同,并且只有在set属性不同时才更改。

+0

感谢您的回复,我改变了双向模式,并使用其他解决方法,它现在可以工作。 – Sarina

+0

请在此标记一个答案作为正确答案。 –

从转换回去除执行