2

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

这是我的数据网格模板:

<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>
...
4

1 回答 1

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>

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

于 2012-07-19T08:53:45.437 回答