WPF:使用绑定属性自定义数据窗口

时间:2009-05-21 05:43:17

标签: c# .net wpf xaml binding

我是WPF的新手。我有一个ListBox,我想为一个项目设置一个模板(我称之为Person)。将使用TextBlock。该人必须使用公共属性:“Foreground”和“IsOnline”。如果“IsOnline”为真,我会使用该人的“前景”属性,否则为“灰色”。就这样。我的第一个模板是:

<DataTemplate x:Key="UnselectedPersonTemplate" DataType="{x:Type o:Person}">
    <TextBlock Text="{Binding Path=Name}" Foreground="{Binding Path=Foreground}" Margin="1">
        <DataTemplate.Triggers>
            <DataTrigger Binding="{Binding Path=IsOnline}" Value="False">
                <Setter Property="TextBlock.Foreground" Value="Gray" />
            </DataTrigger>
        </DataTemplate.Triggers>
</DataTemplate>

当然,这不起作用。没有例外,但也没有预期的结果。然后我尝试使用Trigger for TextBlock,但会有一个异常,我不能使用DataTriggers(只有EventTriggers)。

感谢您的任何建议! :)

1 个答案:

答案 0 :(得分:4)

为您的TextBlock命名,并将setter的TargetName属性设置为该名称。

<DataTemplate x:Key="UnselectedPersonTemplate" DataType="{x:Type o:Person}">
    <TextBlock x:Name="tb" Text="{Binding Path=Name}" 
          Foreground="{Binding Path=Foreground}" Margin="1" />
    <DataTemplate.Triggers>
       <DataTrigger Binding="{Binding Path=IsOnline}" Value="False">
          <Setter TargetName="tb" Property="Foreground" Value="Gray" />
       </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>