如何绑定存在于不同用户控件中的无线电的IsChecked属性?

时间:2011-05-24 15:43:23

标签: wpf binding wpf-controls

我正在寻找将一个用户控件中存在的单选按钮的IsChecked属性绑定到另一个用户控件中存在的按钮的方法。两个用户控件都加载到MainWindow中。任何想法都受到高度赞赏。

MainWindow代码:

<Grid x:Name="LayoutRoot">
    <Frame Content="Frame" Source="/WpfApplication1;component/Page1.xaml"/>
    <local:NavUserControl HorizontalAlignment="Center" VerticalAlignment="Bottom"/>
</Grid>

代码页1:

<Grid x:Name="LayoutRoot">
    <local:ContentUC HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>

代码对于用户控件1:

<Grid x:Name="LayoutRoot">
    <RadioButton x:Name="RadioBt1" Content="Enable Next Button" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>

代码对于用户控件2:

<StackPanel x:Name="LayoutRoot" Orientation="Horizontal" VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0,0,0,20">
    <Button Content="Back" HorizontalAlignment="Left" Width="75"/>
    <Button Content="Next" HorizontalAlignment="Left" Width="75" IsEnabled="{Binding IsChecked, ElementName=RadioBt}" />
</StackPanel>

1 个答案:

答案 0 :(得分:2)

遵循encapsulation的原则,您需要UserControl的父RadioButton将该按钮的IsChecked属性公开为自己的属性。然后,这会使位于UserControl之外的按钮绑定到该属性。

要实现这一点,您需要修改UserControl的代码隐藏,以添加相应的属性(例如IsNextEnabled)和DependencyProperty(例如IsNextEnabledProperty })然后将映射到RadioButton的属性。