2010-04-02 6 views
0

확인할 수있는 DropDownButton과 Grid가 있습니다.요소의 가시성 값에 바인딩

Button의 IsChecked 매개 변수를 그리드의 Visibility 값과 바인딩하려고합니다.

사실 (가시성 == 보이는) 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 = "참"의 IsChecked = "{바인딩 ElementName을 = UsersDockWindow, 경로 = 가시성, 변환기 = {StaticResource VisibilityOfBool}} " 작동하지 않습니다 ... 외관상으로는 반대쪽 - VisibilityToBooleanConverter가 필요하지만 그런 것은 없습니다. – Agzam

+1

바인딩을 'UsersDockW' indow.Visibility'와 그것을 원천에 편도로 만드시겠습니까? 그게 작동하지 않으면, 당신은 신속하게 자신의 변환기를 작성할 수 있습니다, 거기에 어떻게 그물에 예제가 있습니다. –

관련 문제