Mvvm uwp-布尔到可见性转换器';行不通

Mvvm uwp-布尔到可见性转换器';行不通,mvvm,uwp,viewmodel,uwp-xaml,converters,Mvvm,Uwp,Viewmodel,Uwp Xaml,Converters,我不明白为什么这么简单的事情会给我带来这么多麻烦,但我还是不明白。 我有这个转换器: 公共类booltovisiblecoverter:IValueConverter { 公共对象转换(对象值、类型targetType、对象参数、字符串语言) { if(值为bool&(bool)值) 返回可见性。可见; 返回可见性。折叠; } 公共对象转换回(对象值、类型targetType、对象参数、字符串语言) { 返回(值为可见性&(可见性)值==可见性.Visible); } } 这个视图模型: 公共

我不明白为什么这么简单的事情会给我带来这么多麻烦,但我还是不明白。 我有这个转换器:

公共类booltovisiblecoverter:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、字符串语言)
{
if(值为bool&(bool)值)
返回可见性。可见;
返回可见性。折叠;
}
公共对象转换回(对象值、类型targetType、对象参数、字符串语言)
{
返回(值为可见性&(可见性)值==可见性.Visible);
}
}
这个视图模型:

公共类LoginViewModel:INotifyPropertyChanged
{
私家布尔酒店;
公共图书馆是可见的
{
获取{return isHowToVisibile;}
设置{IsHowToVisible=value;Notify(nameof(IsHowToVisible));}
}
公共事件属性更改事件处理程序属性更改;
公共作废通知(字符串propertyName)
{
PropertyChanged?.Invoke(这是新的PropertyChangedEventArgs(propertyName));
}
公共空间showhoto()
{
IsHowToVisible=true;
}
}
在XAML中,我有一个按钮,可以激活
ShowHowTo
并将
IsHowToVisible
更改为
true
, 一个
StackPanel
,它的可见性I绑定到视图模型属性
IsHowToVisible
,它看起来像这样:


XAML通过以下方式了解转换器:

xmlns:con=“使用:MyApp.Converters”
这个按钮起作用了。使用调试器显示视图模型中的属性确实更改为
true
,并且
PropertyChanged
事件确实触发。但就是这样。我在转换器中设置了一个断点,但它没有到达那里

我尝试重建和部署,将模式更改为双向模式,没有任何帮助


我做错了什么?

在我的测试中,您的上述代码运行良好,请确保您在关注
xaml时可以转到定义(或F12)

另一方面,如果你的应用目标是Windows 10版本1607及更高版本,你可以删除你的
booltovisiblecoverter
代码,而不需要在xaml中使用转换。自Windows10版本1607开始,XAML框架提供了一个内置的布尔到可见性转换器。转换器将true映射为Visible枚举值,将false映射为Collazed,因此您可以将Visibility属性绑定到布尔值,而无需创建转换器。请注意,这不是函数绑定的功能,只是属性绑定。要使用内置转换器,应用程序的最低目标SDK版本必须为14393或更高版本。当你的应用针对早期版本的Windows 10时,你不能使用它


如果您仍然存在此问题,您可以创建一个可以复制它的最小样本。

x:Bind
默认为
OneTime
,仅计算一次。如果属性的初始值为true,是否将调用converter并将
true
转换为
Visible
?如果是,则转换器按预期工作。然后将模式更改为单向或双向-您的代码在任何情况下都可以工作。