【发布时间】:2018-02-21 15:05:08
【问题描述】:
我创建了一个按钮,它的内容绑定了一个状态,我初始化了状态,但是按钮内容不能显示相应的文字,在调试模式下,我发现它似乎执行了一个循环,得到状态后,执行转换函数,然后直接跳到ConvertBack(),再回到Convert()。
我在 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
}
【问题讨论】: