У меня есть такая привязка видимости внутри UserControl.
<Grid x:Name="_dockPanelMain">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ContentControl Grid.Row="0" cal:RegionManager.RegionName="{x:Static Member=consts:RegionNames.MainMenu}" DockPanel.Dock="Top" Visibility="{Binding MainMenuVisibility, Mode=TwoWay}"/>
<ContentControl Grid.Row="0" x:Name="dockManagerModules" cal:RegionManager.RegionName="{x:Static Member=consts:RegionNames.Modules}" Visibility="{Binding ModulesVisibility, Mode=TwoWay}"/>
<ContentControl Grid.Row="1" x:Name="dockManagerStatusBar" cal:RegionManager.RegionName="{x:Static Member=consts:RegionNames.StatusBar}"/>
</Grid>
Этот пользовательский элемент управления получает ViewModel, соответствующей частью которого является
private void SwitchMenuAndModulViews(object sender)
{
if (ModulesVisibility == Visibility.Visible)
{
ModulesVisibility = Visibility.Collapsed;
MainMenuVisibility = Visibility.Visible;
}
else
{
ModulesVisibility = Visibility.Visible;
MainMenuVisibility = Visibility.Collapsed;
}
}
private Visibility _modulesVisibility = Visibility.Visible;
public Visibility ModulesVisibility
{
get { return _modulesVisibility; }
set
{
_modulesVisibility = value;
RaisePropertyChangedEvent(() => ModulesVisibility);
}
}
private Visibility _mainMenuVisibility = Visibility.Collapsed;
public Visibility MainMenuVisibility
{
get { return _mainMenuVisibility; }
set
{
_mainMenuVisibility = value;
RaisePropertyChangedEvent(() => MainMenuVisibility);
}
}
Когда вызывается SwitchMenuAndModulView,Ничего не произошло. Переменные изменяются, но привязка не работает, и оба ContentControls всегда имеют Visibility, установленную как Visible, что, я думаю, является значением по умолчанию, и ни одна из них никогда не меняется на Collapsed.