У меня есть StackPanel
внутри Grid
, который находится внутри UserControl
. Я установил видимость StackPanel
на основе свойства под названием ShowInstrumentAction
, которое присутствует в ViewModel
, который установлен как DataContext
. Эта операция отлично работает.
Но у меня есть кнопка внутри этого StackPanel
(см. PrimeFlush3TimesButton
), и я хочу, чтобы она была видна при некоторых других условиях. Но видимость на уровне ребенка не работает.
Можно ли сделать такую привязку?
Или мне написать стиль для видимости кнопки?
Я не уверен, что может быть правильным подходом. Пожалуйста помоги.
<StackPanel x:Name = "InstrumentOperationsPanel" Visibility = "{Binding DataContext.ShowInstrumentAction,RelativeSource = {RelativeSource Mode=FindAncestor,AncestorType = {x:Type UserControl}},Converter = {StaticResource boolToVisibility}}" Orientation = "Horizontal" Grid.Row = "0" HorizontalAlignment = "Center">
<Button x:Name = "PrimeButton"
Content = "{StaticResource InstrumentPrime}"
Margin = "{StaticResource AllControlsMargin}" Command = "{Binding DataContext.InstrumentPrimeCommand,RelativeSource = {RelativeSource Mode=FindAncestor,AncestorType = {x:Type UserControl}}}">
</Button>
<Button x:Name = "FlushButton"
Content = "{StaticResource InstrumentFlush}"
Margin = "{StaticResource AllControlsMargin}" Command = "{Binding DataContext.InstrumentFlushCommand,RelativeSource = {RelativeSource Mode=FindAncestor,AncestorType = {x:Type UserControl}}}">
</Button>
<Button x:Name = "PrimeFlush3TimesButton"
Content = "{StaticResource PrimeAndFlush3Times}"
Margin = "{StaticResource AllControlsMargin}"
Visibility = "{Binding DataContext.IsBuiltInUser,RelativeSource = {RelativeSource Mode=FindAncestor,AncestorType = {x:Type UserControl},AncestorLevel=3},Converter = {StaticResource boolToVisibility}}"
Command = "{Binding DataContext.InstrumentPrimeAndFlush3TimesCommand,RelativeSource = {RelativeSource Mode=FindAncestor,AncestorType = {x:Type UserControl}}}">
</Button>
</StackPanel>
Используйте ElementBinding
. Назовите пользовательский элемент управления.
<Button x:Name = "PrimeFlush3TimesButton"
Content = "{StaticResource PrimeAndFlush3Times}"
Margin = "{StaticResource AllControlsMargin}"
Visibility = "{Binding ElementName=UserControlName,Path=DataContext.IsBuiltInUser,Converter = {StaticResource boolToVisibility}}"
Command = "{Binding ElementName=UserControlName,Path=DataContext.InstrumentPrimeAndFlush3TimesCommand}">
</Button>
Конечно, позволь мне попробовать