我创建了包含TextBox和PasswordBox的用户控件。 的 RestrictedBox.xaml
<UserControl.Resources>
<Converters:BoolToVisibilityConverter x:Key="boolToVisConverter" />
<Converters:BoolToVisibilityConverter x:Key="boolToVisConverterReverse" />
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White" Width="Auto">
<StackPanel Margin="5,5,5,5">
<TextBox Text="{Binding TextValue}" Visibility="{Binding IsTextBox,Converter={StaticResource boolToVisConverter}}" BorderBrush="Green" />
<PasswordBox Password="{Binding TextValue}" Visibility="{Binding IsTextBox,Converter={StaticResource boolToVisConverterReverse}}" BorderBrush="Red" />
</StackPanel>
</Grid>
RestrictedBox.xaml.cs
public partial class RestrictedBox : UserControl
{
public RestrictedBox()
{
InitializeComponent();
}
public string TextValue
{
get { return (string)GetValue(TextValueProperty); }
set { SetValue(TextValueProperty, value); }
}
public static readonly DependencyProperty TextValueProperty = DependencyProperty.Register("TextValue", typeof(string), typeof(RestrictedBox), new PropertyMetadata(default(string)));
public bool IsTextBox
{
get { return (bool)GetValue(IsTextBoxProperty); }
set { SetValue(IsTextBoxProperty, value); }
}
public static readonly DependencyProperty IsTextBoxProperty = DependencyProperty.Register("IsTextBox", typeof(bool), typeof(RestrictedBox), new PropertyMetadata(default(bool)));
}
现在我将上面的用户控件添加到我的 LoginView.xaml 页面
<control:RestrictedBox TextValue="Imdadhusen" IsTextBox="True" />
现在我运行应用程序,但TextValue =“Imdadhusen”没有与我的文本框绑定,第二个属性IsTextBox设置为True,这意味着它将自动隐藏Passwordbox,而不是Textbox。
任何帮助将不胜感激!
谢谢, Imdadhusen
答案 0 :(得分:2)
请设置DataContext,因为在用户控件中它不理解DataContext。 所以在构造函数中尝试这个。
this.DataContext = this;
可能对你有帮助......
答案 1 :(得分:1)
UserControls不会自动将自己注册为数据上下文,因此用户控件内的绑定将无法绑定任何内容。
我已添加以下行我的UserControl代码隐藏以启用默认绑定。
public RestrictedBox()
{
InitializeComponent();
this.DataContext = this;
}
谢谢, Imdadhusen