Вы можете привязать только к свойствам зависимости в вашем UserControl, нет никакого способа (afaik) для доступа к элементам XAML внутри вашего UserControl таким образом, поэтому вам нужно определить новое свойство Dependency в вашем UserControl, а затемпривязать к ней видимость вашей кнопки.
Если вы создаете UserControl, который должен предоставлять информацию «внешнему миру XAML», это то, как вы должны сделать это, по моему мнению.
UserControl1.xaml.cs:
public static readonly DependencyProperty IsRb1CheckedProperty =
DependencyProperty.Register("IsRb1Checked",
typeof(bool), typeof(UserControl1), new PropertyMetadata(default(bool)));
public bool IsRb1Checked
{
get => (bool) GetValue(IsRb1CheckedProperty);
set => SetValue(IsRb1CheckedProperty, value);
}
Теперь нам нужно привязать RadioButton к этому свойству, но так как DataContext из UserControl наследуется от родительского, он не будет работать сразу после установки.
Вы можете либо установить для себя DataContext DockPanel внутри вашего UserControl (НЕ меняйте UserControls DataContext), либо вы можете просто дать свой UserControl имя и использоватьElementName в привязке вашего RadioButton:
Давайте рассмотрим последний метод, поскольку он более понятен.
UserControl1.xaml
<UserControl x:Class="WpfPlayground.UserControl1"
x:Name="UserControlRoot"
<RadioButton IsChecked="{Binding ElementName=UserControlRoot, Path=IsRb1Checked}"/>
</UserControl>
Я связываюсьОт RadioButton до IsRb1Checked напрямую, я не знаю, что такое SomeProperty в вашем примере, но вы можете создать свойство-обертку, которое устанавливает оба логических значения, или даже лучше использовать событие Checked для переключения IsRb1Checked.
Затем в вашем Window не забудьте использовать встроенный BooleanToVisibilityConverter:
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter" />
</Window.Resources>
<DockPanel>
<local:UserControl1 x:Name="UserControl1"></local:UserControl1>
<Button Visibility="{Binding ElementName=UserControl1, Path=IsRb1Checked,
Converter={StaticResource BoolToVisibilityConverter}}"/>
</DockPanel>
Небольшой комментарий о MVVM: это не обязательно поможет в этом случае.Я буду либо вынужден предоставить UserControl свой собственный ViewModel, а затем создать его экземпляр в родительском ViewModel, либо дать UserControl родительский ViewModel, что предотвратит повторное использование.Лучший способ - показать свойство зависимостей.