0
我試圖隱藏DataGridRow
s,條件是PrintQueue.Status != PrintQueueStatus.None
,但我無法使其工作。PrinterQueueStatus到DataGridRow上的可見性轉換器
這是我已經試過:
XAML
<Window.Resources>
<self:PrinterStatusToVisibilityConverter x:Key="PrinterStatusToVisibilityConverter" />
</Window.Resources>
<DataGrid RowDetailsVisibilityMode="Visible" AlternatingRowBackground="#E0E0E0" AlternationCount="2" CellStyle="{StaticResource BodyContentDataGridCentering }" Grid.Row="1" Name="dgPrinters" AutoGenerateColumns="False" RowHeight="50">
<!--body content datagrid cell vertical centering-->
<DataGrid.Columns>
<DataGridTemplateColumn Header="Überwachen" Width="Auto" CellStyle="{StaticResource BodyContentDataGridCentering}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox HorizontalAlignment="Center" IsChecked="{Binding Monitor, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Width="Auto" Header="Druckername" Binding="{Binding FullName, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="True"/>
<DataGridTextColumn Width="Auto" Header="Freigabename" Binding="{Binding ShareName, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="True"/>
<DataGridTextColumn Header="Portname" Binding="{Binding PortName, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="True"/>
<DataGridTextColumn Header="Treibername" Binding="{Binding DriverName, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="True"/>
</DataGrid.Columns>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding Status, Converter={StaticResource PrinterStatusToVisibilityConverter}}">
<Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>
而且我代碼隱藏該轉換器
public class PrinterStatusToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((PrintQueueStatus) value != PrintQueueStatus.None)
return Visibility.Visible;
return Visibility.Hidden;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return PrintQueueStatus.None;
}
}
所以我想知道我」米做錯了嗎?我很確定我誤解了轉換器的東西。任何人都可以向我解釋我的例子嗎?那將是真棒。
我試過把代碼切成重要的部分。所以不要懷疑它是否看起來缺少某些東西。程序運行正常,只是行不會隱藏。