设置内容控件的背景

时间:2013-03-30 22:28:57

标签: wpf wpf-controls

<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。

3 个答案:

答案 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>