2017-08-24 37 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