我有一个显示自定义user control
,content control
和textbox
的窗口...当用户在自定义{{1}上选择radio button
时,依赖属性更改,这反过来会将视图更改为数据模板
我遇到的问题:我无法正确检索在交换的user control
上公开的底层依赖项属性。例如,每个用户控件都公开user control
依赖项属性。
根据该值,我想在IsSearching
完成之前禁用某些功能。我尝试过几种方式设置IsSearching
文本,但无法找到检索绑定的正确方法。
我还尝试将依赖属性绑定到mainviewmodel(CTALightViewModel)上的属性,但它似乎无法正常工作。绝对有点失落,所以任何帮助都会受到赞赏。
textbox
的DataTemplates
<views:CTAAddress x:Name="CTAAddressView" IsSearching="{Binding VMBusy, Mode=OneWay}"/>
内容控制
<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>
答案 0 :(得分:0)
由于您绑定到CTALightViewModel
,您是否在CTALightViewModel
中有一个名为IsSearching
的属性,您可以将其设置为绑定中的路径? e.g
<TextBox Text="{Binding ElementName=ViewSwap, Path=?????, Mode=OneWay}" />
如果没有,您可以在IsSearching
中创建名为CTALightViewModel
的媒体资源,在媒体资源的设置工具中,您可以调用OnPropertyChanged()
,以便用户界面了解更改信息。发生。
答案 1 :(得分:0)
我意识到我需要实现一个视图模型库来实现这一目标。我创建了一个并且让其他视图模型继承自此基础。