【发布时间】:2015-09-14 17:14:02
【问题描述】:
我试图通过绑定到属性的 Visibility 属性来控制 Telerik RadPropertyGrid 中 PropertyDefinition 的可见性,但似乎 PropertyDefinition 忽略了对该属性的更改。
控件的 XAML 代码如下。注意TestVis。
<Window x:Class="SettingsDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
Title="SettingsDialog"
Height="500"
Width="330">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<telerik:RadPropertyGrid
Grid.Row="0"
x:Name="PropertyGrid"
AutoGeneratePropertyDefinitions="False"
Item="{Binding}">
<telerik:RadPropertyGrid.PropertyDefinitions>
<telerik:PropertyDefinition
Binding="{Binding Setting1}"
DisplayName="Property 1"
Description=""Lorem ipsum dolor sit amet"
/>
<telerik:PropertyDefinition
Binding="{Binding Setting2}"
Visibility="{Binding TestVis}"
DisplayName="Property 2"
Description=""Lorem ipsum dolor sit amet"
/>
</telerik:RadPropertyGrid.PropertyDefinitions>
</telerik:RadPropertyGrid>
</Grid>
</Window>
此对话框的代码隐藏如下。
using System.Windows;
public partial class SettingsDialog : Window
{
private Visibility _TestVis;
public Visibility TestVis
{
get { return _TestVis; }
set
{
this._TestVis = value;
NotifyPropertyChanged( "TestVis" );
}
}
public bool Setting1 = { get; set; }
public bool Setting2 = { get; set; }
public SettingsDialog()
{
Setting1 = true;
Setting2 = true;
TestVis = Visibility.Collapsed;
InitializeComponent();
}
}
我希望这会导致“Property 2”不显示,但它确实存在。我做错了什么?
【问题讨论】:
-
我将构造函数中的
TestVis赋值改为Visibility值而不是布尔值。