-6

そのため、列の更新に問題があります。正常に更新されていることがわかりますが、何らかの理由で、チェックする必要がある実際のチェックボックスがそうではありません。すべての値が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>
4

1 に答える 1

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リソースは、たとえば、別のレベルに設定することもできます。グリッドビュー。

于 2012-06-14T19:03:28.640 に答える