WPF Listview-根据内容更改行的格式
我有一个WPF列表视图,有3列。名称、成本和销售。成本和销售是可编辑的文本框,格式为货币 2个问题: -我可能会列出一些特定的项目,其中成本和销售额需要格式化为百分比,而不是货币。因此,如果Name=“x”,则成本和销售额应具有百分比stringformtWPF Listview-根据内容更改行的格式,wpf,Wpf,我有一个WPF列表视图,有3列。名称、成本和销售。成本和销售是可编辑的文本框,格式为货币 2个问题: -我可能会列出一些特定的项目,其中成本和销售额需要格式化为百分比,而不是货币。因此,如果Name=“x”,则成本和销售额应具有百分比stringformt 有些商品只需要卖出期权。因此,如果Name=“y”,则不要在成本列中显示文本框 我将如何在WPF中实现这一点?我正在研究DataTriggers,但无法找出如何正确实现 <ListView x:Name="Pricing_LV" H
- 有些商品只需要卖出期权。因此,如果Name=“y”,则不要在成本列中显示文本框
<ListView x:Name="Pricing_LV" HorizontalAlignment="Left" Height="335" Margin="10,41,0,0" VerticalAlignment="Top" Width="350" TabIndex="22">
<ListView.View>
<GridView>
<GridViewColumn Header="Surcharge" Width="185" DisplayMemberBinding="{Binding Path=Name}"/>
<GridViewColumn Header="Cost" Width="70">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Width="55" Text="{Binding Path=Cost, StringFormat='c'}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Sell" Width="70">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Width="55" Text="{Binding Path=Sell, StringFormat='c'}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
您可能已尝试将数据触发器直接放入
文本框中。触发器
,但随后出现以下错误
错误:触发器集合成员的类型必须为EventTrigger
也见此
解决方案是简单地将触发器
s包装在样式中
<ListView x:Name="Pricing_LV" HorizontalAlignment="Left" Height="335" Margin="10,41,0,0" VerticalAlignment="Top" Width="350" TabIndex="22">
<ListView.View>
<GridView>
<GridViewColumn Header="Surcharge" Width="185" DisplayMemberBinding="{Binding Path=Name}"/>
<GridViewColumn Header="Cost" Width="70">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Width="55">
<TextBox.Style>
<Style TargetType="TextBox">
<Setter Property="Text" Value="{Binding Path=Cost, StringFormat='c'}"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Name}" Value="x">
<Setter Property="Text" Value="{Binding Path=Cost, StringFormat=#.00\\%}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Name}" Value="y">
<Setter Property="Text" Value=""></Setter>
<Setter Property="Visibility" Value="Hidden"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Sell" Width="70">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Width="55">
<TextBox.Style>
<Style TargetType="TextBox">
<Setter Property="Text" Value="{Binding Path=Sell, StringFormat='c'}"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Name}" Value="x">
<Setter Property="Text" Value="{Binding Path=Sell, StringFormat=#.00\\%}"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
注意:我不使用
p
作为百分比格式,因为我认为这不适合您的情况。另请参见谢谢!。成功了!你是对的,我丢失了样式标签。