我有一個網格,有多行。我想根據屬性隱藏/顯示其中一行。那可能嗎?根據屬性顯示/隱藏網格行?
在我的情況,我有兩個網格行。一個有一個屬性網格,另一個有一個列表框。列表框綁定到一個對象,列表項綁定到該對象內的數組。我想要的是在數組爲空時隱藏該行(包括列表框)。所以當我的對象的數組是空的時候,你應該只看到一個帶有屬性網格的窗口,而沒有其他東西。
謝謝!
我有一個網格,有多行。我想根據屬性隱藏/顯示其中一行。那可能嗎?根據屬性顯示/隱藏網格行?
在我的情況,我有兩個網格行。一個有一個屬性網格,另一個有一個列表框。列表框綁定到一個對象,列表項綁定到該對象內的數組。我想要的是在數組爲空時隱藏該行(包括列表框)。所以當我的對象的數組是空的時候,你應該只看到一個帶有屬性網格的窗口,而沒有其他東西。
謝謝!
是。將ListBox的Visibility屬性綁定到包含該數組的對象。然後應用一個自定義值轉換器,它將查看數組並查看它是否爲空。如果它爲空,則返回Visibility.Collapsed。否則,返回Visibility.Visible。然後確保你的RowDefinition具有自動的高度,並在列表框被摺疊它會自動縮到什麼。
您的值轉換器會是這個樣子:
public class EmptyVisiblityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
YourObject yourObject = value as YourObject;
return yourObject.YourArray.Count > 0 ? Visibility.Visible : Visibility.Hidden;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
而且你的XAML應該是這個樣子:
<Window.Resources>
<local:EmptyVisiblityConverter x:Key="emptyVisibilityConverter"/>
</Window.Resources>
...
<ListBox Visibility="{Binding Path=YourObject, Converter={StaticResource emptyVisibilityConverter}}"/>
這裏是一個XAML唯一的解決辦法
<ListBox Name="MyListBox" MinHeight="200">
<ListBox.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=MyListBox, Path=Items.Count}" Value="0">
<Setter Property="ListBox.Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.Style>
</ListBox>
該解決方案對我的作品! – djcouchycouch 2009-07-15 12:47:13