Wpf 文本块样式触发器
我想合并两个不同ViewModel的显示名,但前提是第一个不等于NullObject 我可以在转换器或父视图模型中轻松地执行此操作,但我 这根本不显示任何内容:Wpf 文本块样式触发器,wpf,xaml,mvvm,styles,datatrigger,Wpf,Xaml,Mvvm,Styles,Datatrigger,我想合并两个不同ViewModel的显示名,但前提是第一个不等于NullObject 我可以在转换器或父视图模型中轻松地执行此操作,但我 这根本不显示任何内容: <TextBlock Grid.Column="2" Grid.Row="0" > <TextBlock.Inlines> <Run Text="{Binding HonorificVm
<TextBlock Grid.Column="2" Grid.Row="0" >
<TextBlock.Inlines>
<Run Text="{Binding HonorificVm.DisplayName}"/>
<Run Text="{Binding PersonNameVm.DisplayName}"/>
</TextBlock.Inlines>
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding HonorificVm.Honorific}" Value="{x:Static model:Honorific.NullHonorific}">
<Setter Property="Text" Value="PersonNameVm.DisplayName"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
为什么?我会将它分成两个
文本块
,只使用触发器更改可见性。通过使用内联线
并尝试更改触发器中的文本
,您可能会遇到问题,内联线
无法提取到设置器
e、 g
我使用内联线来获得运行;两个文本块不是有问题吗?你能写出一些代码吗?@Berryl:我不太明白你的意思;添加了一个示例。我所说的跑步是指我知道通过使用它,两个片段之间都会显示适当的空间。你怎么知道边距设置0,0,5,0会工作得这么好?@Berryl:我只是经常使用它,而且它似乎适合大多数情况,为了使它能够正确缩放并依赖于字体,你可以删除
边距
,并使用绑定中的StringFormat
,在第一个文本块
中添加一个空格(“{}{}{0}
)。顺便说一句,如果这没有显示任何内容,那么您的DataContext和/或绑定可能有问题。
<StackPanel Grid.Column="2" Grid.Row="0" Orientation="Horizontal">
<TextBlock Text="{Binding HonorificVm.DisplayName}" Margin="0,0,5,0">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding HonorificVm.Honorific}"
Value="{x:Static model:Honorific.NullHonorific}">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBlock Text="{Binding PersonNameVm.DisplayName}" />
</StackPanel>
<TextBlock Grid.Column="2" Grid.Row="0">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Text">
<Setter.Value>
<MultiBinding StringFormat="{}{0} {1}">
<Binding Path="HonorificVm.DisplayName" />
<Binding Path="PersonNameVm.DisplayName" />
</MultiBinding>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding HonorificVm.Honorific}"
Value="{x:Static model:Honorific.NullHonorific}">
<Setter Property="Text" Value="{Binding PersonNameVm.DisplayName}" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>