【发布时间】:2013-12-21 01:54:52
【问题描述】:
我有以下网格:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
...
<ContentPresenter Grid.Row="1" Content="{Binding Path=PredictiveWorkspace}"
Visibility="{Binding Path=ShowPredictiveWorkspace,
Converter={StaticResource boolToVisibility}}"/>
<ContentPresenter Grid.Row="1" Content="{Binding Path=M2Workspace}"
Visibility="{Binding Path=ShowStandardWorkspace,
Converter={StaticResource boolToVisibility}}"/>
...
</Grid>
这两个ContentPresenters 具有相同的Grid.Row 定义,因为一次只能看到其中一个。
我有以下boolToVisibility 转换器:
[ValueConversion(typeof(bool), typeof(System.Windows.Visibility))]
public class BoolToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if ((bool)value)
{
return System.Windows.Visibility.Visible;
}
else
return System.Windows.Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
问题是:ContentPresenters 都是可见的!我还注意到只有ShowPredictiveWorkspace 属性被应用程序读取。在ShowStandardWorkspace getter 上设置的断点永远不会被调用。
我猜这是一个愚蠢的错误,但我真的找不到它。
编辑:
public bool ShowStandardWorkspace
{
get { return this._showStandardWorkspace; }
set
{
this._showStandardWorkspace = value;
this.OnPropertyChanged(() => this.ShowStandardWorkspace);
}
}
【问题讨论】:
-
这可能与开始时
M2Workspace为空有关吗?我认为 ContentPresenter 的可见性不应该与其呈现的内容相关,对吗? -
您可以通过将两个演示者绑定到相同的内容来验证此假设。
标签: wpf grid converter visibility contentpresenter