如果行中的值=“无付款”,我需要在数据模板中显示组合框,否则我不会在行中显示组合框,我该怎么做?
这是我的数据网格模板:
<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>
...
最佳答案
您无需注册参加事件。只需在 ComboBox
声明中创建一个 DataTrigger
即可。
<ComboBox>
<ComboBox.Triggers>
<DataTrigger Binding="{Binding [Name of your property]}" Value="No payment">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</ComboBox.Triggers>
</ComboBox>
另一种(也许更好)的方法是在您绑定(bind)的对象上实现一个属性,并使用一个 bool 值来指示客户的当前状态(例如,NoPayment 等)。
然后,您可以使用转换器将此值绑定(bind)到 ComboBoxes Visibility
属性,转换器将此状态转换为目标 Visibility
值。
关于c# - DatagridTemplateColumn 中的动态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11556266/