很简单,你可以编写一个转换器将字符串转换为布尔值。
public class StringToBoolConvert : IValueConverter
{
public string TrueString { get; set; } = "true";
/// <inheritdoc />
public object Convert(object value, Type targetType, object parameter, string language)
{
if (TrueString.Equals(value?.ToString()))
{
return true;
}
return false;
}
/// <inheritdoc />
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotSupportedException();
}
}
然后您可以将 StringToBoolConvert 添加到资源中。
<Page.Resources>
<local:StringToBoolConvert x:Key="StringToBoolConvert" TrueString="1"></local:StringToBoolConvert>
</Page.Resources>
您可以在 DataTemplate 中使用 StringToBoolConvert。
<ListView ItemsSource="{x:Bind List}">
<ListView.ItemTemplate >
<DataTemplate x:DataType="x:String">
<Grid>
<StackPanel>
<TextBlock x:Name="Text" Text="{x:Bind}" ></TextBlock>
<CheckBox IsChecked="{x:Bind Converter={StaticResource StringToBoolConvert}}"></CheckBox>
</StackPanel>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我们编写一些代码在 ListView 中进行绑定。
public MainPage()
{
this.InitializeComponent();
DataContext = this;
}
public ObservableCollection<string> List { get; set; } = new ObservableCollection<string>()
{
"1", "2", "3"
};
我们使用 StringToBoolConvert 并将 TrueString 设置为值为 true 以及当我们检查 CheckBox 时。
因为我们将 TrueString 设置为“1”,当值为“1”时我们将检查 CheckBox。尝试运行代码,您将看到此图像。