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属性不同时才更改。
答
从转换回去除执行
感谢您的回复,我改变了双向模式,并使用其他解决方法,它现在可以工作。 – Sarina
请在此标记一个答案作为正确答案。 –