2010-04-02 2 views
0

У меня есть CheckDownButton и сетка.Привязка к значению видимости элемента

Я хочу связать параметр IsChecked Button с значением видимости сетки.

Если (Видимость == Visible) IsCheked = истина

Я пытался сделать так:

IsChecked="{Binding ElementName=UsersDockWindow, Path=IsVisible}" 

, но он не работает, причина IsVisible является свойством доступно только для чтения.

ответ

1

Создать VisibilityToBooleanConverter и использовать его в вашем переплетом

public class VisibilityToBooleanConverter : IValueConverter 
{ 
    public object Convert(object value, ...) 
    { 
    return (Visibility)value == Visibility.Visible; 
    } 
} 

В вашем XAML:

<Window.Resources> 
    <!-- assuming the local: xmlns is mapped to the appropriate namespace --> 
    <local:VisibilityToBooleanConverter x:Key="vbc" /> 
</Window.Resources> 

IsChecked="{Binding Visibility, 
        ElementName=UsersDockWindow, 
        Converter={StaticResource vbc}}" 
4

Используйте BooleanToVisibilityConverter. Вот пример how to do the binding с использованием этого конвертера.

+0

IsCheckable = "True" IsChecked = "{Binding ElementName = UsersDockWindow, Path = Видимость, конвертер = {StaticResource VisibilityOfBool}} « Не работает ... видимо, мне нужно немного противоположность - VisibilityToBooleanConverter, но нет такой вещи – Agzam

+1

Почему бы вам не поместить привязку на« UsersDockW » indow.Visibility' и сделать это в одном направлении? Если это не сработает, вы можете быстро написать свой собственный конвертер, есть множество примеров в сети, как это сделать. –