在 UWP 中未检测到绑定可见性属性的变量
Posted
技术标签:
【中文标题】在 UWP 中未检测到绑定可见性属性的变量【英文标题】:Variable not detected to binding visibility properties in UWP 【发布时间】:2020-07-29 10:41:44 【问题描述】:我有三个按钮,我想用一个变量来调节它们的可见性。 但我的印象是我的变量没有被检测到。
MainPage.xaml:
<Button
Margin="0,0,0,50"
Name="startButton"
Height="50"
Width="250"
Click="OnStartClick"
ClickMode="Press"
Visibility="Binding StartVisibility, Converter=StaticResource BoolToVisibilityConverter">
Start
</Button>
<Button
Margin="0,0,0,50"
Name="validButton"
Height="50"
Width="250"
Click="OnValidClick"
ClickMode="Press"
Visibility="Binding ValidVisibility, Converter=StaticResource BoolToVisibilityConverter">
Valid
</Button>
<Button
Margin="0,50,0,0"
Name="stopButton"
Height="50"
Width="250"
Click="OnStopClick"
ClickMode="Press"
Visibility="Binding StopVisibility, Converter=StaticResource BoolToVisibilityConverter, Mode=OneWay">
Cancel
</Button>
MainPage.xaml.cs:
private IMapService _mapService;
private bool drawing = false;
public bool StopVisibility
get
return drawing;
public bool StartVisibility
get
return !drawing;
public bool ValidVisibility
get
return _mapService.SketchEditorCanExecute();
IMapService.cs:
bool SketchEditorCanExecute();
BoolToVisibilityConverter.cs:
public object Convert(object value,
Type targetType,
object parameter,
String language)
Boolean val = false;
if (value is Boolean)
val = (Boolean)value;
return val
? Visibility.Visible
: Visibility.Collapsed;
有了断点,我发现我从来没有通过 Get 方法。 转换器也有同样的问题。
有什么想法吗?
【问题讨论】:
【参考方案1】:您可能忘记设置DataContext
。
您可以在代码隐藏或XAML
中设置DataContext
代码隐藏
public class MainPage.xaml
public MainPage()
this.DataContext = this;
InitializeComponent();
在 XAML 中
<MainPage DataContext="Binding RelativeSource=RelatativeSource Self" />
【讨论】:
【参考方案2】:非常感谢,它有效。
但是没有更新。我的变量的检测有效,但当它的值发生变化时没有任何反应。
我试过这个来强制更新:
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string name = null)
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
//...
OnPropertyChanged("StopVisibility");
OnPropertyChanged("StartVisibility");
OnPropertyChanged("ValidVisibility");
我有错误吗?
【讨论】:
以上是关于在 UWP 中未检测到绑定可见性属性的变量的主要内容,如果未能解决你的问题,请参考以下文章