的情況比我爲重複提到的職位更復雜一點,所以這裏是一個有效的解決方案:
據我所知,你需要在創建DependencyProperty(DP)的用戶控件與複選框並將Checkbox.IsChecked
屬性綁定到此DP。 然後,您可以將您的usr2
控件綁定到DP上。
下面是代碼:
usr1.xaml
<UserControl [...]>
<Grid>
<CheckBox x:Name="MyCheckbox" IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type local:usr1}}, Path=MyCheckboxIsChecked, Mode=TwoWay}" />
</Grid>
</UserControl>
usr1.xaml.cs(代碼後面)
public partial class usr1: UserControl
{
public usr1()
{
InitializeComponent();
}
public static readonly DependencyProperty MyCheckboxIsCheckedProperty = DependencyProperty.Register(
"MyCheckboxIsChecked", typeof(bool), typeof(usr1), new PropertyMetadata(default(bool)));
public bool MyCheckboxIsChecked
{
get
{
return (bool)GetValue(MyCheckboxIsCheckedProperty);
}
set
{
SetValue(MyCheckboxIsCheckedProperty, value);
}
}
}
usr2.xaml
<UserControl [...]>
<Grid>
<TextBox x:Name="MyTextBox" />
</Grid>
</UserControl>
MainWindow.xaml
<Grid>
<StackPanel>
<local:usr1 x:Name="usr1Control" />
<local:usr2 IsEnabled="{Binding ElementName=usr1Control, Path=MyCheckboxIsChecked}" />
</StackPanel>
</Grid>
@Slyvain,這不是重複,這裏是不同的用戶控件 – SiddarthVarunesh
的問題是完全一樣的:你有一個自定義控制'usr2' taht您希望禁用或基於'usr1'控件的'CheckBoxControl-Checked'屬性啓用。更改控件和屬性的名稱,並且您有解決方案,關鍵是ElementName上的綁定。 – Slyvain
@Slyvain,你能告訴我如何調用像「ElementName = usr1.CheckBox1」這樣的用戶控件的內部元素。我試過了,但它不起作用 – SiddarthVarunesh