我建立這個轉換器:
public class BooleanToVisibilityConverter : IValueConverter
{
public BooleanToVisibilityConverter()
{
}
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is bool && (bool) value)
{
return Visibility.Visible;
}
return Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
return (value is Visibility && (Visibility)value == Visibility.Visible);
}
}
而在我的視圖導入這樣的:
<Page.Resources>
<vm:BooleanToVisibilityConverter x:Key="BoolToVis" />
</Page.Resources>
比我添加了一個結合到我SymbolIcon:
<SymbolIcon Grid.Column="0" x:Name="CompleteTask" Symbol="Accept" Foreground="Green" Visibility="{Binding Path=Check, Converter=StaticResource BoolToVis}}"/>
來源:https://pmdevweb.wordpress.com/2016/05/24/uwp-binding-boolean-to-visibility/
OP使用'x:Bind'。什麼是使用'綁定'而不是(如果有的話)? – IInspectable
其實應該沒有區別(在這種情況下不會有)。它可以被綁定到x:綁定,但我個人更喜歡綁定 - 因爲它與NVVM更相關,看起來更好。 – RTDev
有顯着差異。首先,'x:Bind'和'Binding'不能互換使用。另一方面,他們有不同的默認模式。最後,但當然並非最不重要的一點,在編譯時檢查'x:Bind',產生編譯器錯誤(而'Binding'將在運行時失敗)。有關詳細信息,請參見[深度數據綁定](https://msdn.microsoft.com/windows/uwp/data-binding/data-binding-in-depth)。你必須有一個非常好的**理由來選擇綁定到x:綁定(*個人偏好*不是一個好理由)。 – IInspectable