我正在努力完成我的第一个用户控制问题 更改绑定属性的值甚至不会调用属性getter(文本框可以) 这种行为的原因是什么?
<luc:IpTextBox x:Name="IpTxtBxIpv4Address"
Grid.Row="1" Grid.Column="1"
IsEnabled="{Binding VmNicData.EnableIpSetting}"
Mode="IPv4Address"/>
<TextBox x:Name="TxtBxTest"
Grid.Row="1" Grid.Column="2"
IsEnabled="{Binding VmNicData.EnableIpSetting}"
Text="{Binding VmNicData.IpV4SubnetMask}"/>
视图模型:
private bool _ipEnabled;
public bool IpEnabled
{
get => _ipEnabled;
set
{
_ipEnabled = value;
OnPropertyChanged(nameof(IpEnabled));
OnPropertyChanged(nameof(EnableIpSetting));
}
}
private bool _dhcpEnabled;
public bool DhcpEnabled
{
get => _dhcpEnabled;
set
{
_dhcpEnabled = value;
OnPropertyChanged(nameof(DhcpEnabled));
OnPropertyChanged(nameof(EnableIpSetting));
}
}
public bool EnableIpSetting => _ipEnabled && !_dhcpEnabled;
提前感谢
到目前为止我做了什么:
我的用户控件只包含一些文本框。我有DataContext = this;在初始化我的usercontroll之后。
将IsEnabled static设置为true或false会对这些texbox产生预期的影响。
已解决:我的错误是更改了datacontext(我的usercontrol的构造函数中的DataContext = this)。这破坏了我对父母的约束力。
无论如何,谢谢大家支持
答案 0 :(得分:-1)
您已绑定到“EnableIpSetting”,但在更新时您没有调用OnPropertyChanged。
您还需要将OnPropertyChanged逻辑添加到EnableIpSetting。