wpf GridViewDataColumn привязка несколькими свойствами - PullRequest
0 голосов
/ 18 декабря 2018

Я работаю с приложением WPF.У меня есть "GridViewDataColumn" в файле XAML.Есть сценарий, где я должен связать невидимый атрибут «GridViewDataColumn» двумя свойствами.Пожалуйста, проверьте код ниже (как этот) -

<telerik:GridViewDataColumn x:Name="NameColumn"
    IsVisible="{Binding IsNameEnabled}"
    IsVisible="{Binding SomeColumn,Converter={StaticResource SomeBoolConverter}, ConverterParameter={x:Static resources:SomeResources.Name}}"
</telerik:GridViewDataColumn>

Но он не является обязательным и дает некоторую ошибку привязки.Может кто-нибудь помочь мне, как я могу связать невидимый атрибут несколькими свойствами.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Если вы хотите привязать к более чем одному свойству источника, вы должны использовать MultiBinding и класс конвертера, который реализует интерфейс IMultiValueConverter, например:

public class SomeBoolConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        bool isNameEnabled = System.Convert.ToBoolean(values[0]);
        bool someColumn = System.Convert.ToBoolean(values[1]);

        //...

        return isNameEnabled && someColumn;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}

XAML:

<telerik:GridViewDataColumn x:Name="NameColumn">
    <telerik:GridViewDataColumn.IsVisible>
        <MultiBinding Converter="{StaticResource SomeBoolConverter}"
                      ConverterParameter="{x:Static resources:SomeResources.Name}">
            <Binding Path="IsNameEnabled" />
            <Binding Path="SomeColumn" />
        </MultiBinding>
    </telerik:GridViewDataColumn.IsVisible>
</telerik:GridViewDataColumn>
0 голосов
/ 18 декабря 2018

Вы не можете назначить свойство дважды таким образом.Вместо этого вам нужно использовать триггеры.

<telerik:GridViewDataColumn x:Name="NameColumn">
    <telerik:GridViewDataColumn.Stlyle>
        <Style>
            <Setter Property="IsVisible" Value="True"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsNameEnabled}" Value="False">
                    <Setter Property="IsVisible" Value="False" />
                </DataTrigger>
                <DataTrigger Binding="{Binding SomeColumn,Converter={StaticResource SomeBoolConverter}, ConverterParameter={x:Static resources:SomeResources.Name}}" Value="False">
                    <Setter Property="IsVisible" Value="False" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </telerik:GridViewDataColumn.Stlyle>
</telerik:GridViewDataColumn>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...