2017-08-24 34 views
-1

我有下面的Expander,但想使用DataTemplate作为窗口资源,因为我将在几个地方使用它。我唯一不确定的是标签内容“错误/警告:”。这将与每次使用模板时不同。无论如何,我仍然可以重复使用相同的模板,但传入文本以在此标签中使用?我已经绑定到一个int(在下面的情况下lblOverallInt),所以我不知道如何传递另一个值。重用DataTemplate

<Expander Header="{Binding Path=lblOverallInt, UpdateSourceTrigger=PropertyChanged}"> 
    <Expander.HeaderTemplate> 
     <DataTemplate> 
      <Border Height="24"> 
       <StackPanel Orientation="Horizontal"> 
        <StackPanel.Style> 
         <Style TargetType="{x:Type StackPanel}"> 
          <Style.Resources> 
           <Style TargetType="{x:Type Label}"> 
            <Style.Triggers> 
             <DataTrigger Binding="{Binding}" Value="0"> 
              <Setter Property="Foreground" Value="Yellow"/> 
             </DataTrigger> 
             <DataTrigger Binding="{Binding Converter={StaticResource isZeroConverter}}" Value="False"> 
              <Setter Property="Foreground" Value="Red"/> 
             </DataTrigger> 
            </Style.Triggers> 
           </Style> 
          </Style.Resources> 
         </Style> 
        </StackPanel.Style> 
        <Label>Errors/Warnings:</Label> 
        <Label Content="{Binding}"/> 
       </StackPanel> 
      </Border> 
     </DataTemplate> 
    </Expander.HeaderTemplate> 
</Expander> 

回答

1

反正我仍然可以重复使用相同的模板,但通过在这个标签使用的文本?

你可以绑定到返回“错误/警告:”其他财产或其他字符串:如果要YourPropertyName绑定失败

<Expander Header="{Binding}"> 
    <Expander.HeaderTemplate> 
     <DataTemplate> 
      <Border Height="24"> 
       <StackPanel Orientation="Horizontal"> 
        <StackPanel.Style> 
         <Style TargetType="{x:Type StackPanel}"> 
          <Style.Resources> 
           <Style TargetType="{x:Type Label}"> 
            <Style.Triggers> 
             <DataTrigger Binding="{Binding lblOverallInt}" Value="0"> 
              <Setter Property="Foreground" Value="Yellow"/> 
             </DataTrigger> 
             <DataTrigger Binding="{Binding Path=lblOverallInt, Converter={StaticResource isZeroConverter}}" Value="False"> 
              <Setter Property="Foreground" Value="Red"/> 
             </DataTrigger> 
            </Style.Triggers> 
           </Style> 
          </Style.Resources> 
         </Style> 
        </StackPanel.Style> 
        <Label Content="{Binding YourPropertyName, FallbackValue=Errors/Warnings:}" /> 
        <Label Content="{Binding}"/> 
       </StackPanel> 
      </Border> 
     </DataTemplate> 
    </Expander.HeaderTemplate> 
</Expander> 

FallbackValue值将显示为默认值,示例如果模板应用到的DataContext(具有lblOverallInt属性的类)缺少此属性。

+0

@windowskm:这是否回答你的问题?请记住接受答案,然后:https://stackoverflow.com/help/someone-answers – mm8