Я работаю с приложением 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>
Но это не обязывает и дает некоторую ошибку привязки. Может ли кто-нибудь помочь мне, как связать атрибут Invisible с несколькими свойствами.





Вы не можете назначить свойство дважды таким образом. Вместо этого вам нужно использовать триггеры.
<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>
Если вы хотите выполнить привязку к нескольким исходным свойствам, вам следует использовать 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>