인스턴스의 인스턴스이고 Button의 Command
속성에 바인딩 된 ViewModel 내에서 두 번째 창이 있다고 가정합니다. 일반적으로이 상황이 MVVM에서 처리되는 방법입니다. 이것에 의해, 윈도우가 열려 있는지 어떤지를 조회하는 ViewModel 내의 다른 property를 작성할 수 있습니다.
private Window _secondWindow = null;
public bool SecondWindowIsOpen
{
get { return _secondWindow != null; }
}
는 그런 다음 XAML에서이 속성에 버튼의 backgroundColor로 결합하고 색상을 결정하기 위해 트리거를 사용할 수 있습니다. 윈도우가 열려있을 때
<Window.Resources>
<Style x:Key="WindowIsOpenButtonStyle" TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding SecondWindowIsOpen}" Value="True">
<Setter Property="Background" Value="Green" />
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<Button Background="Yellow" Command="{Binding OpenSecondWindow}" Style="{StaticResource WindowIsOpenButtonStyle}" />
</Grid>
지금, 버튼의 배경 색상은 노란색으로 변경됩니다, 그리고 다시 닫힐 때 원래 색상의로 다시 복귀됩니다.
mvvm을 사용하는 경우 창을 닫으면 bool 속성을 업데이트 할 수 있습니다. – david