2012-07-09 1 views
1

제목에 대해 유감스럽게도 한 문장으로 설명하는 방법을 모르겠습니다.두 컨트롤이 다른 컨트롤의 가시성을 설정하도록하십시오

그래서 여기 내 목표 : 내 뷰 모델은 제어 (국경)에 대한 가시성을 정의에서 부울이 필요합니다.

나는 내가 BooleanToVisibilityConverter 이것을 달성 할 수 알고 있지만 그것에 조금 더가있다. 컨트롤이 보이지 않으면 UI의 버튼을 표시하고 싶습니다. 버튼이 눌려지면 ViewModel의 부울을 TRUE로 설정 한 다음 컨트롤을 표시하고 방금 푸시 된 버튼을 축소하려는 경우 일단 그 컨트롤이 보이면, 나는 최근에 보았던 컨트롤 안에있는 버튼을 사용하여 컨트롤을 무너지게 한 다음, 원래 버튼을 볼 수있게하고 싶습니다.

은 기본적으로 두 개의 버튼이있다 : (1)이 표시되도록하는 (후 자체를 축소)과 다른 컨테이너를 축소 한 후 첫 번째 버튼이 표시되도록하는 것이다. 내가 이상적 일 것이다 나의보기에 뒤에 코드를 방지 할 수 있습니다, 그래서 만약

나는 MVVM 모든이 작업을 수행하려합니다! 내 WPF Converters library

+1

어떻게 당신은 버튼 클릭을 처리하는이 있습니까? ViewModel의 ICommand? 그렇다면 호출중인 명령의 "execute"메소드에 대해 부울 속성을 true 또는 false로 설정하십시오. 예를 들어 첫 번째 버튼 (테두리를 표시)을 누르고 viewModel의 execute 메서드에서 부울을 TRUE로 설정합니다. XAML에서 Border의 가시성을 동일한 부울 속성에 바인딩하고 이미 제안한 것처럼 BooleanToVisibiltyConverter를 사용합니다. – Thelonias

+0

나는 그것을 찌를 것이다. 네, 내 ViewModel에서 ICommand를 사용하고 있습니다. 그래도 OppositeBooleanToVisibility 변환기가 필요합니까? 그래서 내 깃발이 사실 일 때, 그것은 다른 통제를 숨기거나 붕괴하는 것을 의미합니까? – Travyguy9

+1

예, 정확히 필요합니다. 테두리에 BoolToVisibility 변환기를 사용하고 테두리 외부에있는 단추의 반대 변환기 (테두리의 가시성을 시작하는 데 사용되는 변환기) – Thelonias

답변

1

을이 작동합니다 ... 가정 당신의 명령은 "ShowBorderCommand"와 "HideBorderCommand"당신의 ViewModel의 속성이 "ShowBorder"

<ConverterNamespace:BooleanToVisibilityConverter x:Key="BoolToVis"/> 
<ConverterNamespace:ReverseBooleanToVisibilityConverter x:Key="BoolToCollapse"/> 

<Border Visibility="{Binding ShowBorder, Converter={StaticResource BoolToVis}}"> 
    <Button Command="{Binding HideBorderCommand}"/> 
</Border> 

<Button Command="{Binding ShowBorderCommand}" Visbility="{Binding ShowBorder, Converter={StaticResource BoolToCollapse}}"/> 
+0

참고로, 나는 하나의 ICommand를 사용하고 표시/숨기기 위해 매개 변수를 전달했습니다. 그렇게하면 두 가지 명령이 필요하지 않았습니다. – Travyguy9

+0

그게 효과가 있습니다. – Thelonias

1

Hidden 대신 Collapsed의 사용 가능뿐만 아니라, 역 변환을 할 수있는 BooleanToVisibilityConverter있다 : 당신이 당신의 ViewModel에 ICommands을 사용하고 있기 때문에

<con:BooleanToVisibilityConverter x:Key="ReverseBooleanToVisibilityConverter" IsReversed="True"/> 
<Button Visibility="{Binding SomeProperty, Converter={StaticResource ReverseBooleanToVisibilityConverter}}"/> 
관련 문제