Как я инвертирую BooleanToVisibilityConverter?

Существует проблема [ - это специальный символ регулярного выражения, поэтому необходим параметр regex=False:

df['col1'].str.contains('[', regex=False).any()

Или управляющее значение по \:

df['col1'].str.contains('\[').any()
128
задан Ruben Bartelink 28 October 2015 в 15:16
поделиться

5 ответов

Реализуйте свою собственную реализацию IValueConverter. Демонстрационной реализацией является по телефону

http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx

В Вашем методе Преобразования, имейте его, возвращают значения, которые Вы хотели бы вместо значений по умолчанию.

18
ответ дан 24 November 2019 в 00:34
поделиться

Существует также Преобразователи WPF проект на Codeplex. В их документации они говорят, что можно использовать их MapConverter для преобразования от перечисления Видимости до bool

<Label>
    <Label.Visible>
        <Binding Path="IsVisible">
            <Binding.Converter>
                <con:MapConverter>
                    <con:Mapping From="True" To="{x:Static Visibility.Visible}"/>
                    <con:Mapping From="False" To="{x:Static Visibility.Hidden}"/>
                </con:MapConverter>
            </Binding.Converter>
        </Binding>
    </Label.Visible>
</Label>
20
ответ дан 24 November 2019 в 00:34
поделиться

Запишите свое собственное преобразование.

public class ReverseBooleanToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
   {
       // your converter code here
   }
}
1
ответ дан 24 November 2019 в 00:34
поделиться
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;

public sealed class BooleanToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var flag = false;
        if (value is bool)
        {
            flag = (bool)value;
        }
        else if (value is bool?)
        {
            var nullable = (bool?)value;
            flag = nullable.GetValueOrDefault();
        }
        if (parameter != null)
        {
            if (bool.Parse((string)parameter))
            {
                flag = !flag;
            }
        }
        if (flag)
        {
            return Visibility.Visible;
        }
        else
        {
            return Visibility.Collapsed;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var back = ((value is Visibility) && (((Visibility)value) == Visibility.Visible));
        if (parameter != null)
        {
            if ((bool)parameter)
            {
                back = !back;
            }
        }
        return back;
    }
}

, а затем передать true или false в качестве параметра ConverterParameter

       <Grid.Visibility>
                <Binding Path="IsYesNoButtonSetVisible" Converter="{StaticResource booleanToVisibilityConverter}" ConverterParameter="true"/>
        </Grid.Visibility>
48
ответ дан 24 November 2019 в 00:34
поделиться

Записать ваше собственное - лучшее решение на данный момент. Вот пример конвертера, который может работать как в нормальном, так и в инвертированном режиме. Если у вас есть проблемы с этим, просто спросите.

[ValueConversion(typeof(bool), typeof(Visibility))]
public class InvertableBooleanToVisibilityConverter : IValueConverter
{
    enum Parameters
    {
        Normal, Inverted
    }

    public object Convert(object value, Type targetType,
                          object parameter, CultureInfo culture)
    {
        var boolValue = (bool)value;
        var direction = (Parameters)Enum.Parse(typeof(Parameters), (string)parameter);

        if(direction == Parameters.Inverted)
            return !boolValue? Visibility.Visible : Visibility.Collapsed;

        return boolValue? Visibility.Visible : Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType,
        object parameter, CultureInfo culture)
    {
        return null;
    }
}
<UserControl.Resources>
  <Converters:InvertableBooleanToVisibilityConverter x:Key="_Converter"/>
</UserControl.Resources>

<Button Visibility="{Binding IsRunning, Converter={StaticResource _Converter}, ConverterParameter=Inverted}">Start</Button>
43
ответ дан 24 November 2019 в 00:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: