DatagridTemplateColumn中的动态

时间:2012-07-19 07:54:52

标签: c# .net wpf xaml

如果行中的值=“没有付款”我需要在数据模板中显示ComboBox,否则我不会在行中显示组合框,我该怎么做?

这是我的datagridtemplate:

<DataGridTemplateColumn Header="Time">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock VerticalAlignment="Center" Text="{Binding date_payment, Converter={StaticResource ByteArrayConverter}}" Width="135" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <ComboBox IsReadOnly="False" SelectionChanged="ComboBox_SelectionChanged_1" Style="{DynamicResource ComboBoxStyle}" Height="Auto" ItemsSource="{Binding}" Width="135">
                <ComboBox.BorderBrush>
                    <SolidColorBrush Color="{DynamicResource Color1}"/>
                </ComboBox.BorderBrush>
                <ComboBox.Items>
                    <ComboBoxItem>Payment</ComboBoxItem>
                </ComboBox.Items>
            </ComboBox>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

我认为需要使用事件LoadinRow,但我无法想到,如果我设置Name我的组合框然后不可见(在代码中)?

请帮忙!谢谢:))


答案:

<Setter Property="Visibility" Value="Hidden"/>
  <Style.Triggers>
    <DataTrigger Binding="{Binding date_payment, Converter={StaticResource ByteArrayConverter}}" Value="Не оплачено">
  <Setter Property="Visibility" Value="Visible" />
 </DataTrigger>
...

1 个答案:

答案 0 :(得分:2)

您无需注册参加活动。只需在DataTrigger声明中创建ComboBox

 <ComboBox>
         <ComboBox.Triggers>
            <DataTrigger Binding="{Binding [Name of your property]}" Value="No payment">
               <Setter Property="Visibility" Value="Collapsed"/>
            </DataTrigger>
         </ComboBox.Triggers>
      </ComboBox>

另一种(可能更好的)方法是在您绑定的Object上实现一个Property,其中一个布尔值表示客户的当前状态(例如NoPayment等)。 然后,您可以使用转换器将此值绑定到ComboBox Visibility属性,该转换器将此状态转换为目标Visibility值。