2012-03-06 7 views
23

양식을 사용할 수 없으면 내 양식의 SaveButton이 사라져야합니다. 내가 어떻게 이런 식으로 그 다음 XAML에서 이러한 속성을 바인딩하는 방법이컨트롤의 속성을 다른 컨트롤의 속성에 바인딩하는 방법?

this.formStackPanel.IsEnabled = someValue; 
if(this.formStackPanel.IsEnabled) 
{ 
    this.saveButton.Visibility = Visibility.Visible; 
} 
else 
{ 
    this.saveButton.Visibility = Visibility.Collapsed; 
} 

이 아닌가? 그 일을하는 더 좋은 방법이 있습니까?

답변

55

예. 스택 패널의 IsEnabled를 버튼의 Visibility 속성에 바인딩 할 수 있어야합니다. 그러나 변환기가 필요합니다. WPF에는 작업을 수행해야하는 BooleanToVisibilityConverter 클래스가 있습니다.

<Window 
    x:Class="WpfApplication1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Window.Resources> 
    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/> 
    </Window.Resources> 
    <StackPanel> 
    <ToggleButton x:Name="toggleButton" Content="Toggle"/> 
    <TextBlock 
     Text="Some text" 
     Visibility="{Binding IsChecked, ElementName=toggleButton, Converter={StaticResource BooleanToVisibilityConverter}}"/> 
    </StackPanel> 
</Window> 
+0

토글 버튼 대신 토글 버튼이있는 사용자 정의 컨트롤 (예 : CustomControl)이있는 경우 ElementName = CustomControl.togglebutton을 제외하고 동일한 작업을 수행 할 수 있습니까? – pasha

관련 문제