WPF什么让步他暂时隐藏,然后再显示出来但不影响之前的设置
时间: 2024-05-27 07:10:11 浏览: 7
你可以使用WPF中的Visibility属性来控制控件的显示和隐藏,同时保留之前的设置。具体来说,你可以将Visibility属性设置为Collapsed,这样控件会被隐藏且不占用任何空间。当你需要再次显示控件时,将Visibility属性设置为Visible即可。这种方法可以保留之前的设置,比如控件的大小、位置、颜色等。
相关问题
WPF 设置grid隐藏或者不显示
您可以使用以下代码将 Grid 隐藏或不显示:
隐藏 Grid:
```
myGrid.Visibility = Visibility.Collapsed;
```
不显示 Grid:
```
myGrid.Visibility = Visibility.Hidden;
```
请注意,两种方式都会将 Grid 设置为不可见,但不同之处在于 Visibility.Collapsed 会让 Grid 不占用空间,而 Visibility.Hidden 会将 Grid 隐藏但仍占用空间。
用程序什么写让WPF中的Visibility属性来控制控件的显示和隐藏,同时保留之前的设置。
可以通过创建一个附加属性来实现控制WPF中控件的Visibility属性的显示和隐藏,并且保留之前的设置。下面是示例代码:
首先在项目中创建一个名为"VisibilityExtension"的类,代码如下:
```csharp
using System.Windows;
namespace YourNamespace
{
public static class VisibilityExtension
{
public static readonly DependencyProperty IsVisibleProperty =
DependencyProperty.RegisterAttached("IsVisible", typeof(bool), typeof(VisibilityExtension),
new FrameworkPropertyMetadata(true, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnIsVisibleChanged));
private static readonly DependencyProperty OriginalVisibilityProperty =
DependencyProperty.RegisterAttached("OriginalVisibility", typeof(Visibility), typeof(VisibilityExtension),
new FrameworkPropertyMetadata(default(Visibility)));
public static bool GetIsVisible(DependencyObject obj)
{
return (bool)obj.GetValue(IsVisibleProperty);
}
public static void SetIsVisible(DependencyObject obj, bool value)
{
obj.SetValue(IsVisibleProperty, value);
}
private static void OnIsVisibleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var fe = d as FrameworkElement;
if (fe == null)
return;
if ((bool)e.NewValue)
{
if (fe.ReadLocalValue(OriginalVisibilityProperty) != DependencyProperty.UnsetValue)
fe.Visibility = (Visibility)fe.GetValue(OriginalVisibilityProperty);
else
fe.Visibility = Visibility.Visible;
}
else
{
if (fe.Visibility != Visibility.Collapsed && fe.Visibility != Visibility.Hidden)
fe.SetValue(OriginalVisibilityProperty, fe.Visibility);
fe.Visibility = Visibility.Collapsed;
}
}
}
}
```
在XAML中添加以下命名空间:
```xaml
xmlns:local="clr-namespace:YourNamespace"
```
代码中的"YourNamespace"应替换为你的命名空间。
然后可以在控件上使用附加属性来控制控件的Visibility属性:
```xaml
<Button local:VisibilityExtension.IsVisible="{Binding IsButtonVisible}" Content="Click me" />
```
在ViewModel中使用属性来控制控件的显示和隐藏:
```csharp
private bool _isButtonVisible;
public bool IsButtonVisible
{
get { return _isButtonVisible; }
set
{
if (_isButtonVisible != value)
{
_isButtonVisible = value;
RaisePropertyChanged(() => IsButtonVisible);
}
}
}
```
这样就可以实现在保留之前Visibility属性设置的情况下,动态控制控件的显示和隐藏了。