我有想法,很快就解释说我想加载xaml-files运行时,然后将它们绑定到运行时数据。 在这些xaml文件中,我将使用名为“PropertySetter”的组件,如下所示:
public class PropertySetter : UserControl
{
public string Value { get; set; }
public string Text { get; set; }
public string Adress { get; set; }
public PropertySetter()
{
}
}
xamlfile看起来像这样:
<Grid
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vf="clr-namespace:VisualFactory.vfGraphics.Graphics;assembly=VisualFactory">
<vf:PropertySetter Name="Datapoint" Text="propset" Value="false" Adress="10201" />
<CheckBox IsChecked="{Binding ElementName=Datapoint, Path=Value}" Content="{Binding ElementName=Datapoint, Path=Text}" />
</Grid>
我希望你现在明白这一点。 该复选框将其值(内容,缺陷)绑定到属性设置器,当应用程序运行时,它只更改一堆“PropertySetter”的值,图形更新其内容和值。 但是:当xaml在加载时正确设置值时,当我更改属性设置器的值时,它不会更新它们。我尝试过设置Mode = TwoWay,并且属性设置在iNotify集合中。 有人曾尝试过这样的事吗?
答案 0 :(得分:0)
您需要执行的操作是在INotifyPropertyChanged
课程中实施PropertySetter
,并在每个属性的设置者中触发PropertyChanged
事件。这是绑定知道在源更改时更新UI的机制。
class PropertySetter :UserControl,INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string address;
private string text;
private string value;
public string Value
{
get { return value; }
set
{
if (value == value)
return;
value = value;
PropertyChanged(this, new PropertyChangedEventArgs("Value"));
}
}
public string Text
{
get { return text; }
set
{
if (text == value)
return;
text = value;
PropertyChanged(this, new PropertyChangedEventArgs("Text"));
}
}
public string Address
{
get { return address; }
set
{
if (address == value)
return;
address = value;
PropertyChanged(this, new PropertyChangedEventArgs("Address"));
}
}
public PropertySetter()
{
}
}
PS:用于TwoWay
数据绑定,用于告知数据绑定在目标中进行更改时(在您的情况下,{ {1}}的属性),这些属于来源(在您的情况下,CheckBox
的属性)。
希望这会有所帮助:)
答案 1 :(得分:0)