У меня есть несколько кнопок, каждая из которых реализована в виде UserControl, на экране, и одновременно активна только одна. Теперь рядом со всеми кнопками в Rectangle есть боковая панель типа UserControl, которая должна быть видна только для 1 кнопки, в зависимости от того, какая из них включена. Пробовал несколько привязок для управления видимостью прямоугольника с помощью IsEnabled, но безуспешно. Также подготовьте конвертер видимости. Вот мой код:
<Grid>
<Button Style = "{StaticResource MenuButtonStyle}" x:Name = "BtnUC">
<Button.Content>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width = "1"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Rectangle Grid.Column = "0" Fill = "LightGray" Margin = "-4,0,0,0">
</Rectangle>
<Viewbox ....
</Viewbox>
</Grid>
</Button.Content>
</Button>
</Grid>





Создайте экземпляр преобразователя BooleanToVisibilityConverter в любых ресурсах области.
<Window.Resources>
<BooleanToVisibilityConverter x:Key = "BooleanToVisibilityConverter" />
</Window.Resources>
Затем привяжите Visibility прямоугольника к свойству IsEnabled вашей кнопки, обратившись к нему с помощью имя элементаBtnUC. При указании конвертера true будет преобразовано в Visible, а false в Collapsed.
<Rectangle Grid.Column = "0" Fill = "LightGray" Margin = "-4,0,0,0"
Visibility = "{Binding IsEnabled, ElementName=BtnUC, Converter = {StaticResource BooleanToVisibilityConverter}}"/>
В качестве альтернативы, если имя кнопки отсутствует, обратитесь к родителю Button через RelativeSource.
<Rectangle Grid.Column = "0" Fill = "LightGray" Margin = "-4,0,0,0"
Visibility = "{Binding IsEnabled, RelativeSource = {RelativeSource AncestorType = {x:Type Button}}, Converter = {StaticResource BooleanToVisibilityConverter}}"/>
Вы можете использовать Style с DataTrigger, который устанавливает свойство Visibility для Rectangle на основе значения свойства IsEnabled для Button:
<Rectangle Grid.Column = "0" Fill = "LightGray" Margin = "-4,0,0,0">
<Rectangle.Style>
<Style TargetType = "Rectangle">
<Style.Triggers>
<DataTrigger Binding = "{Binding IsEnabled,RelativeSource = {RelativeSource AncestorType=Button}}" Value = "False">
<Setter Property = "Visibility" Value = "Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>