尽管值为true,但未检查复选框

时间:2012-05-21 12:38:54

标签: c# wpf

所以我的列更新有问题,据我所知,它的更新很好,但由于某种原因,应该检查的实际复选框不是。我似乎无法弄清楚为什么所有值都设置为true。

using (IDbConnection connection = sessionFactory.ConnectionProvider.GetConnection())
{
    if (TableExists(connection, "tbl_ecom_cat_feature") && 
        ColumnExists(connection, "tbl_ecom_cat_feature", "display_on_search"))
    {
        using (IDbCommand cmd = connection.CreateCommand())
        {
            cmd.CommandText = "UPDATE tbl_ecom_cat_feature SET display_on_search = 1";
            cmd.ExecuteNonQuery();
        }
    }
编辑:我刚刚意识到在我的Checkbox_Check方法中我实际上没有放入任何东西来检查它是否被检查......我实际上不确定如何从SQL列中获取数据以查看它是否为真如果是,请将框保持为选中状态。

我显示复选框的代码:

public class StringToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
    if (value != null && value is string)
        {
        var input = (string)value;
        if (string.IsNullOrEmpty("Name"))
            {
            return Visibility.Collapsed;
        }
        else
        {
            return Visibility.Visible;
        }
    }

    return Visibility.Visible;
}

和显示这些复选框的WPF代码如下:

<GridViewColumn Header="Display On Search">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox Visibility="{Binding StringToVisibilityConverter}" IsChecked="{Binding StringToVisibilityConverter}" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>                            
                    </GridViewColumn>

1 个答案:

答案 0 :(得分:0)

您需要将属性绑定到datacontext中的值,然后在绑定中分配转换器,以便将源值转换为目标值。代码:

<GridViewColumn Header="Display On Search">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox Visibility="{Binding sourceProp, Converter={StaticResource myStringToVisibilityConverter}}" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>                            
                    </GridViewColumn>

您需要将转换器指定为以下资源:

<Window.Resources>
        <con:StringToVisibilityConverter x:Key="myStringToVisibilityConverter" />
</Window.Resources>

资源也可以设置在XAML的另一个级别,例如。 gridview。