Ich habe einen Sichtbarkeitskonverter für ein DataGrid, der das Raster ausblenden sollte, wenn die Elementquelle für das Raster null ist. Die Elementquelle ist eine Eigenschaft der Klasse für das Fenster. HierVisibility Converter Binding funktioniert nicht
ist teilweise XAML für das Fenster - das Fenster und die Sichtbarkeit Wandler Definition und die Datenraster:
Fenster:
<Window x:Name="DiagramWindow"
x:Class="FabricAnalyzer.FabricDiagram"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:FabricAnalyzer"
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
mc:Ignorable="d"
Title="FabricDiagram"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Window.Resources>
<ResourceDictionary>
<local:SwitchThumbColorConverter x:Key="SwitchThumbColor"/>
<local:PortThumbColorConverter x:Key="PortThumbColor"/>
<local:StringLengthVisiblityConverter x:Key="VisConverter"/>
<local:PortListVisiblityConverter x:Key="PortVisConverter"/>
Datagrid:
<Grid Name="FabricGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<DataGrid Name="SVCPortDataGrid" Grid.Column="0" Width="Auto"
Visibility="{Binding Path=PortList, Converter=
{StaticResource PortVisConverter}}"
AutoGenerateColumns="False">
Hier ist der Code hinter für die Eigenschaft, an die es gebunden werden soll, und den VisibilityConverter. Die Idee ist, dass, wenn die PortList null ist - es wird standardmäßig sein - das DataGrid sollte zusammengebrochen bleiben. Ich habe überprüft, dass die PortList null ist, wenn ich es möchte.
public partial class FabricDiagram : Window
{
public List<PortResult> PortList = null;
zuletzt der Sichtbarkeitskonverter. Ich habe im Debugger überprüft, dass es nicht aufgerufen wird.
public class PortListVisiblityConverter : IValueConverter
{
public Object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
{
return Visibility.Collapsed;
}
else
{
return Visibility.Visible;
}
}
public Object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Ich habe versucht, die XAML zu dieser Bindung
ÄndernVisibility="{Binding PortList, Converter={StaticResource PortVisConverter}}"