在我的WPF应用程序中,我试图根据用户选择的选项更改按钮的可见性.在加载时,我希望其中一个按钮不可见.我正在使用内置值转换器BooleanToVisibilityConverter.然而,由于按钮在加载时出现,因此无法正常工作.我已将属性更改为true和false,没有任何区别.下面是我的代码,我看不出我错过了什么?
我的View模型中的属性
bool ButtCancel
{
get { return _buttCancel; }
set
{
_buttCancel = value;
OnPropertyChanged("ButtCancel");
}
}
Run Code Online (Sandbox Code Playgroud)
在我的app.xaml中
<Application.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVis"/>
Run Code Online (Sandbox Code Playgroud)
在我的MainWindow.xaml中
<Button Grid.Column="2"
Command="{Binding CommandButtProgressCancel}"
Content="Cancel"
Visibility="{Binding ButtCancel, Converter={StaticResource BoolToVis}}"
IsEnabled="{Binding ButtCancelEnabled}"
Height="50" Width="120"
HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="0,0,50,20"/>
Run Code Online (Sandbox Code Playgroud)
Ste*_*eri 41
对于初学者来说,如果你使用的是Command,那么你不需要绑定IsEnabled,命令实现应该决定这一点.
其次,ViewModel与View的绑定往往会在稍后阶段发生,因此最好也为绑定设置默认值,如此
Visibility="{Binding ButtCancel, Converter={StaticResource BoolToVis}, FallbackValue=Hidden}"
Run Code Online (Sandbox Code Playgroud)
第三,正如Mike指出的那样,确保您的属性是公共的,因为ViewModel和View是两个独立的类.
您可以使用a而不是转换器DataTrigger
.
<Button Grid.Column="2" Command="{Binding CommandButtProgressCancel}" Content="Cancel"
Visibility="{Binding ButtCancel, Converter={StaticResource BoolToVis}}"
IsEnabled="{Binding ButtCancelEnabled}" Height="50" Width="120"
HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,50,20">
<Button.Style>
<Style TargetType={X:Type Button}>
<!-- This would be the default visibility -->
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<DataTrigger Binding="{Binding ButtCancel, UpdateSourceTrigger=PropertyChanged}" Value="True">
<Setter Property="Visibility" Value="Hidden" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Run Code Online (Sandbox Code Playgroud)
将ViewModel的属性更新为 public
public bool ButtCancel
{
get { return _buttCancel; }
set
{
_buttCancel = value;
OnPropertyChanged("ButtCancel");
}
}
Run Code Online (Sandbox Code Playgroud)
并确保您的DataContext MainWindow
设置为ViewModel
.
归档时间: |
|
查看次数: |
72058 次 |
最近记录: |