gpt4 book ai didi

mvvm - UWP 属性在用户控件的依赖属性中更改

转载 作者:行者123 更新时间:2023-12-01 23:28:39 32 4
gpt4 key购买 nike

我正在使用用户控件,绑定(bind)来自依赖属性的值。但问题是,当我尝试更改值时,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}" />

我的 View 模型:

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"));
}
}
}

}

当我想在我的 View 中使用它并从 View 模型绑定(bind)它时,属性更改不适用于用户控件。

最佳答案

对于x:bind默认模式是一次,你应该将模式更改为单向。

<TextBox Text="{x:Bind Text,Mode=OneWay}" />

您不应该在 SetValue(TextProperty, value); 中编写代码,也不应该在依赖项属性中使用通知,因为依赖项可以自动调用更改。

参见:Dependency Properties

关于mvvm - UWP 属性在用户控件的依赖属性中更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43671773/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com