DataTemplate绑定项不随绑定内容改变



我在AvaloniaTabControl中显示了一组选项卡,每个选项卡由一个TabModel对象表示。

TabModel.cs:

public class TabModel
{
public string Name { get; set; }
public string Content { get; set; }
}

我希望每个选项卡都有一个TextBlock作为它的标题(类似于文档中的例子)和一个自定义控件作为主体。加载TabControl时,标题和正文显示正常。但是,当我修改NameContent字段时,控件不会更新。当控件更改Content时(通过TwoWay绑定),更改将反映在字段中,代码所做的任何更改将被遗忘。

Xaml:

<TabControl Items="{Binding Tabs}">
<TabControl.ItemTemplate>
<TreeDataTemplate DataType="models:TabModel">
<TextBlock Text="{Binding Name}" />
</TreeDataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<TreeDataTemplate DataType="models:TabModel">
<controls:BoundEditor
BoundText="{Binding Content, Mode=TwoWay}" Name="BoundEditor" />
</TreeDataTemplate>
</TabControl.ContentTemplate>
</TabControl>

目前,您的模型是一个普通的POCO。POC>O bject .

你需要的是一个ViewModel…

public class TabModel : ReactiveObject
{
private string _name;
public string Name 
{
get { return _name; }
set { this.RaiseAndSetIfChanged(ref _name, value); }
}
...
}

现在每次Namesetter被调用时,它会检查是否值是新的,更新它如果是,然后将通知UI更新。

最新更新