【问题标题】:Checkboxes not checked despite value being true尽管值为 true,但未选中复选框
【发布时间】:2012-05-21 12:38:54
【问题描述】:

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

【问题讨论】:

  • 您需要向我们展示您检索数据并绑定复选框的代码...
  • 我在完成主题之前不小心发布了这个,请给我一分钟。
  • 我在这段代码中没有看到任何复选框。我所看到的只是一个 SQL 查询,它将为表中的每条记录设置一个值为 1。复选框在哪里?
  • 请添加相关代码,否则我们无法为您提供帮助。这是您的 SQL 查询,不会导致问题 - 如果您的问题是您检索值或创建复选框的位置,那么这就是您需要给我们的编码。
  • 正如我在编辑中指出的那样,我意识到我实际上并没有进行数据绑定,但我实际上不确定如何从 C# 中的数据库中获取信息,因此实际上没有代码检索值,我将在创建复选框的位置发布我的代码,以防万一。

标签: c# wpf


【解决方案1】:

您需要将您的属性绑定到来自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 中的另一个级别,例如。网格视图。

【讨论】:

    猜你喜欢
    • 2015-06-06
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 2016-01-14
    • 2019-03-06
    相关资源
    最近更新 更多