<UserControl .....>
<DataTemplate DataType="{x:Type vm:AViewModel}">
<vw:AView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:BViewModel}">
<vw:BView />
</DataTemplate>
<ContentControl x:Name="chartScreen" Content="{Binding Screen}" Background="Yellow" />
</UserControl>
从上面的代码可以看出,ContentControl通过绑定到ViewModel的Screen属性来设置其内容。 Screen属性将返回AViewModel或BViewModel的实例,具体取决于某些条件。问题是,当在屏幕上加载UserControl时,Screen属性为null,因此还没有设置内容。此时,我想为ContentControl设置一些背景,但我找不到如何做到这一点的方法?背景=“黄色”什么都不做......
如何设置ContentControl的背景?即使内容显示AView或Biew,也应该始终应用此背景,或者为null。
答案 0 :(得分:6)
将ContentControl
包裹在Border
<Border Background="Yellow">
<ContentControl x:Name="chartScreen"
Content="{Binding Screen}" />
</Border>
如果UserControl
中的所有内容都是ContentControl
,那么只需在Background
上设置UserControl
。这样也会删除额外的Border
。
答案 1 :(得分:1)
尝试这样的事情:
<ContentControl x:Name="chartScreen" Content="{Binding Screen}" Background="Yellow">
<ContentControl.Triggers>
<Trigger Property="Content" Value="{x:Null}">
<Trigger.Value>
<Border Background="Yellow"/>
</Trigger.Value>
</Trigger>
</ContentControl.Triggers>
</ContentControl>
答案 2 :(得分:0)
在WPF中尝试这样的事情:
<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding Content}" Value="{x:Null}">
<Setter Property="Content">
<Setter.Value>
<Rectangle Width="100" Height="100" Fill="Blue" />
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>