2014-07-21 4 views
0

Groupbox에는 두 개의 단추가있는 Grid가 있습니다.Groupbox 컨트롤 IsEnabled 상태가 해당 단추의 IsEnabled가 일부보기 모델에 바인딩되어있을 때 자식 단추로 전파되지 않음

희망의 코드가 더 잘 표현할 수 :

<Window x:Class="PanelTest.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="344" Width="361" 
    x:Name="This"> 
<Grid> 
    <GroupBox x:Name="_groupBox" IsEnabled="False" Header="GroupBox" HorizontalAlignment="Left" Margin="30,87,0,0" VerticalAlignment="Top" Height="206" Width="300"> 
     <Grid> 
      <Button Content="Bound Button" IsEnabled="{Binding IsEnabled, Mode=TwoWay}" HorizontalAlignment="Left" Height="51" VerticalAlignment="Top" Width="128" Margin="140,75,0,0"/> 
      <Button Content="Unbound Button" HorizontalAlignment="Left" Margin="10,75,0,0" VerticalAlignment="Top" Width="125" Height="51"/> 
     </Grid> 
    </GroupBox> 
    <Button Content="Toggle Group Enabled" HorizontalAlignment="Left" Margin="93,29,0,0" VerticalAlignment="Top" Width="161" Click="EnableClick" Height="35"/> 

</Grid> 

public partial class MainWindow : Window { 
    public MainWindow() { 
     InitializeComponent(); 
     DataContext = new ButtonViewModel(); 
    } 

    private void EnableClick(object sender, RoutedEventArgs e) 
    { 
     _groupBox.IsEnabled = !_groupBox.IsEnabled; 
    } 
} 

public class ButtonViewModel : INotifyPropertyChanged { 

    static ButtonViewModel() { 
     eventArgCache = new Dictionary<string, PropertyChangedEventArgs>(); 
    } 

    bool _enabled; 
    public bool IsEnabled { 
     get { return _enabled; } 
     set { 
      if (_enabled == value) 
       return; 
      _enabled = value; 
      RaisePropertyChanged("IsEnabled"); 
     } 
    } 

...}

나는 그룹 상자 나에 IsEnabled 속성을 기다리고 있었다 사용 가능한 상태로 전환 할 때 설정할 수는 있지만 호출되지는 않으며 바인딩 된 단추는 그룹 상자의 활성화 된 상태를 취하지 않습니다.

(양방향) 바인딩과 부모 - 자식 관계를 동시에 작동시키는 방법이 있습니까?

+0

요구 사항이 명확하지 않습니다. GroupBox가 비활성화되어있을 때와 Bound Button을 비활성화해야 할 때와 같은 것을 원하십니까? – Vishal

+0

예, 그룹 상자를 토글 링할 때 단추의 상태를 사용하여 그룹 상자를 활성화하고 단추의보기 모델에서 IsEnabled에 바인딩을 허용 할 수 있습니다. – jchristof

답변

0

사용이 그룹 상자의 속성 버튼의 속성을 바인딩하는

<GroupBox x:Name="_groupBox" IsEnabled="False" Header="GroupBox" HorizontalAlignment="Left" Margin="30,87,0,0" VerticalAlignment="Top" Height="206" Width="300"> 
    <Grid> 
     <Button Content="Bound Button" IsEnabled="{Binding IsEnabled, ElementName=_groupBox}" HorizontalAlignment="Left" Height="51" VerticalAlignment="Top" Width="128" Margin="140,75,0,0"/> 
     <Button Content="Unbound Button" HorizontalAlignment="Left" Margin="10,75,0,0" VerticalAlignment="Top" Width="125" Height="51"/> 
    </Grid> 
</GroupBox> 

참고 : IsEnabled="{Binding IsEnabled, ElementName=_groupBox}"

둘째 때 모두 같은 시간에 _groupBox & 뷰 모델에 맞게 버튼의 속성을 바인딩 할 알려진 방법이 없습니다 다릅니다. 즉 _groupBox.IsEnabled is falseviewmodel.IsEnabled is true이지만 계산 된 속성은 이러한 논리를 수행하는 데 도움이 될 수 있습니다.