我使用用户控件绑定依赖项属性中的值。 但问题是,当我尝试更改值时,UI不会更新。 我在用户控件中的XAML代码:
<TextBox Text="{x:Bind Text}" />
和C#
public event PropertyChangedEventHandler PropertyChanged;
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value);
if (PropertyChanged != null)
{
PropertyChanged(this,
new PropertyChangedEventArgs("Text"));
}
}
}
// Using a DependencyProperty as the backing store for Text. This enables animation, styling, binding, etc...
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text", typeof(string), typeof(Control1), new PropertyMetadata(null));
当我想使用它时:
<local:Control text="{Binding Val,Mode=TwoWay}" />
我的ViewModel:
public event PropertyChangedEventHandler PropertyChanged;
private string _val;
public string Val
{
get
{
return _val;
}
set
{
if (_val != value)
{_val = value;
if (PropertyChanged != null)
{
PropertyChanged(this,
new PropertyChangedEventArgs("Val"));
}
}
}
}
当我想在我的视图中使用它并从视图模型绑定它时,属性更改不适用于用户控件。
答案 0 :(得分:4)
对于x:bind
默认模式是一次,您应该将模式更改为OneWay。
<TextBox Text="{x:Bind Text,Mode=OneWay}" />
您不应该在SetValue(TextProperty, value);
中编写代码,并且不应该在依赖项属性中使用Notify,因为依赖项可以自动调用已更改。