未检测到变量以绑定 UWP 中的可见性属性
Variable not detected to binding visibility properties in UWP
我有三个按钮,我想用一个变量来调节它们的可见性。
但是我的印象是没有检测到我的变量。
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 方法。
转换器也有同样的问题。
有什么想法吗?
您可能忘记设置 DataContext
。
您可以在代码隐藏或 XAML
中设置 DataContext
代码隐藏
public class MainPage.xaml
{
public MainPage()
{
this.DataContext = this;
InitializeComponent();
}
}
在XAML
<MainPage DataContext="{Binding RelativeSource={RelatativeSource Self}}" />
我有三个按钮,我想用一个变量来调节它们的可见性。 但是我的印象是没有检测到我的变量。
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 方法。 转换器也有同样的问题。
有什么想法吗?
您可能忘记设置 DataContext
。
您可以在代码隐藏或 XAML
DataContext
代码隐藏
public class MainPage.xaml { public MainPage() { this.DataContext = this; InitializeComponent(); } }
在XAML
<MainPage DataContext="{Binding RelativeSource={RelatativeSource Self}}" />