ContentTemplate和多视图依赖属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ContentTemplate和多视图依赖属性相关的知识,希望对你有一定的参考价值。
我有一个窗口显示自定义user control
,content control
和textbox
...当用户在自定义radio button
上选择user control
时,依赖项属性会更改,从而将视图更改为来自数据模板
我遇到的问题:我无法正确检索交换的user control
上公开的底层依赖属性。例如,每个用户控件都公开一个IsSearching
依赖属性。
基于该值,我想禁用一些功能,直到IsSearching
完成。我尝试过几种方式设置textbox
文本,但无法找到检索绑定的正确方法。
我还尝试将依赖属性绑定到mainviewmodel(CTALightViewModel)上的属性,但它似乎没有正常工作。绝对有点失落,所以任何帮助都表示赞赏。
<views:CTAAddress x:Name="CTAAddressView" IsSearching="{Binding VMBusy, Mode=OneWay}"/>
的DataTemplates
<Window.Resources>
<DataTemplate x:Key="AddressTemplate" DataType="{x:Type viewmodel:CTAAddressViewModel}">
<views:CTAAddress />
</DataTemplate>
<DataTemplate x:Key="PremiseTemplate" DataType="{x:Type viewmodel:CTAPremiseViewModel}">
<views:CTAPremise />
</DataTemplate>
</Window.Resources>
<Window.DataContext>
<viewmodel:CTALightViewModel />
</Window.DataContext>
内容控制
<ContentControl x:Name="ViewSwap" Content="{Binding }">
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=SearchOptions, Path=IsSelected}" Value="0">
<Setter Property="ContentTemplate" Value="{StaticResource AddressTemplate}" />
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=SearchOptions, Path=IsSelected}" Value="1">
<Setter Property="ContentTemplate" Value="{StaticResource PremiseTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
要显示的TextBox
<TextBox Text="{Binding ElementName=ViewSwap, Path=?????, Mode=OneWay}" />
既然你绑定了CTALightViewModel
,你在CTALightViewModel
中有一个名为IsSearching
的属性,你可以设置为绑定中的路径吗?例如
<TextBox Text="{Binding ElementName=ViewSwap, Path=?????, Mode=OneWay}" />
如果没有,你可以在你的IsSearching
中创建一个名为CTALightViewModel
的属性,在属性的setter中,你可以调用你的OnPropertyChanged()
,这样UI就会在发生变化时了解变化。
我意识到我需要实现一个视图模型库来实现这一目标。我创建了一个并且让其他视图模型继承自此基础。
以上是关于ContentTemplate和多视图依赖属性的主要内容,如果未能解决你的问题,请参考以下文章
IOC 控制反转Android 视图依赖注入 ( 视图依赖注入步骤 | 视图依赖注入代码示例 )