-1
我的主窗口視圖:WPF MVVM:前面板,以阻止所有控件
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisibility"/>
</Window.Resources>
<Grid x:Name="TopGrid">
<Rectangle x:Name="TopPanel" Grid.ZIndex="3"
Fill="LightBlue" Opacity="0.3"
Visibility="{Binding IsContentBlocked, Mode=TwoWay, Converter={StaticResource BoolToVisibility}}" />
<Grid Name="main" DataContext="{StaticResource mainViewModel}">
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.2*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<!-- Here my controls: stackpanel, buttons, groupboxes, etc. -->
</Grid>
</Grid>
視圖模型:
private bool isContentBlocked = false;
public bool IsContentBlocked
{
get
{
return this.isContentBlocked;
}
set
{
if (this.isContentBlocked == value)
{
return;
}
this.isContentBlocked = value;
OnPropertyChanged("IsContentBlocked");
}
}
最初,當我啓動WPF應用程序,頂部面板應該被隱藏所以應該啓用所有的內容,用戶應該能夠與他們一起玩,但由於某種原因,頂部面板沒有被隱藏,它被顯示,所以所有內容都不能被訪問。我使用矩形將內容設置爲阻止。
我在做什麼錯?
我的視圖模型正在實現INotifyPropertyChanged。
這'的DataContext =「{StaticResource的mainViewModel}」'建議你沒有你viewmodel可用於樹的上方,所以你的'Rectangle.Visibility'沒有任何東西可以綁定到。您應該在調試期間檢查「輸出」窗口以查看綁定失敗。 – Evk
有一件事跳出來:你不應該在'Visibility'上使用'TwoWay'綁定模式。 –
@Evk感謝您的建議。我不得不將datacontext上移到外部網格。現在有用。 – user1624552