Это общий вопрос, который будет применяться к любому элементу управления WPF.
То, что я пытаюсь сделать, это поместить два элемента управления друг на друга и переключить, что видно.
Т.е. я хочу контролировать их видимость так, чтобы за один раз был виден только один элемент управления.
Один элемент управления обычно будет скрыт, но после какого-либо события будет отображаться поверх другого элемента управления.
Я попытался изменить порядок z и попытался использовать свойство видимости, но, хотя я могу заставить нормально скрытый элемент управления отображаться, обычно отображаемый элемент управления также виден.
например. кнопка ниже обычно скрыта, но при щелчке элемента меню, например, свойство ShowAboutBox в модели представления будет изменено, изменяя свойство видимости. В этот момент должна быть видна кнопка, а не панель подключения.
<Grid>
<Button Visibility="{Binding ShowAboutBox, Converter={StaticResource BoolToVisConverter}}">
<Button.Content>About My App</Button.Content></Button>
<DockPanel Canvas.ZIndex="0" LastChildFill="True"></DockPanel>
</Grid>
Я не настолько опытен в WPF, но предполагаю, что это должно быть довольно просто - есть предложения?
EDIT:
Код выше показывает сочетание техник, которые я пробовал. И, вероятно, смущает вопрос. Совсем недавно я попробовал следующее, но безрезультатно.
<Grid>
<Button Visibility="{Binding ShowAboutBox, Converter={StaticResource BoolToVisConverter}}">
<Button.Content>About My App</Button.Content></Button>
<DockPanel></DockPanel>
</Grid>
Изменение видимости кнопки приводит к ее отображению, но панель док-станции и ее содержимое по-прежнему видны сверху кнопки. (кнопка отображается за панелью док-станции из-за порядка z).
Полагаю, я мог бы одновременно переключать видимость панели док-станции (чтобы быть противоположной кнопке), но я надеялся избежать этого.