【发布时间】:2025-12-30 13:45:12
【问题描述】:
我正在开发 Silverlight 4(现有应用程序),具有以下要求:
简介
- 应该有一个搜索视图,其中有一个复选框来确定它是否应该根据存储在某个列中的 1 或 0 标志返回记录
- 后端部分工作正常(从 WCF 服务检索数据)
- 我遇到的问题是将 Boolean Checkbox 值从前端转换为字节值(1 或 0)发送到 WCF 调用以获取数据
我知道这是转换器可以工作的地方。
我自己做了一些搜索,发现了这个:
Silverlight Bind to inverse of boolean property value
这非常适合在 1 中显示“是”,在 0 中显示“否”。
但我在发送复选框 True 或 False 值时遇到问题:
即它发送给对象如下:
选中 = 1 未检查 = 0
我做了什么:
- 例如,我有一个用户详细信息表,如下所示:
-
我有以下 Convertor 类:
命名空间 MyApplication.Silverlight.Converters {
public class BoolToByteConverter : IValueConverter { public int FalseValue { get; set; } public int TrueValue { get; set; } public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value == null) return FalseValue; else return (bool)value ? TrueValue : FalseValue; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return value != null ? value.Equals(TrueValue) : false; } }}
我的 XAML
命名空间声明
xmlns:converters="clr-namespace:MyApplication.Silverlight.Converters;assembly=MyApplication.Silverlight"
麦克:忽略=“d”
d:DesignHeight="140" d:DesignWidth="800">
资源声明
<UserControl.Resources>
<converters:BoolToByteConverter x:Key="COneZero" FalseValue="0" TrueValue="1" />
</UserControl.Resources>
搜索部分
<Grid x:Name="LayoutRoot">
<StackPanel Orientation="Vertical">
<Grid x:Name="UserSearchGrid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="140" />
<ColumnDefinition Width="120" />
<ColumnDefinition Width="120" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="120" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<dataInput:Label x:Name="lblName" Grid.Row="0" Grid.Column="0" Content="Name:" Margin="2" />
<!--Some Other search fields-->
<CheckBox x:Name="chkIncludeInActiveUsers"
Grid.Row="4"
Grid.Column="3"
Grid.ColumnSpan="3"
VerticalAlignment="Center"
Content="Include InActive Users"
IsChecked="{Binding SearchCriteria.ActiveStatus, Converter={StaticResource COneZero}, Mode=TwoWay}"
Margin="21,4,99,4" />
</Grid>
</StackPanel>
</Grid>
</UserControl>
SearchCriteria 是我用来执行过滤的可观察对象
如果您在 XAML 中发现任何命名空间问题,那是一个错字。请忽略它们。我的主要问题是实际转换器。
谢谢
【问题讨论】:
标签: c# silverlight checkbox ivalueconverter