XAML in Xamarin.Forms 基礎篇 電子書

XAML in Xamarin.Forms 基礎篇 電子書
XAML in Xamarin.Forms 基礎篇 電子書

Xamarin.Forms 快速入門 電子書

Xamarin.Forms 快速入門 電子書
Xamarin.Forms 快速入門 電子書
顯示具有 Data Binding 標籤的文章。 顯示所有文章
顯示具有 Data Binding 標籤的文章。 顯示所有文章

2014/06/29

好用的 XAML 資料繫結 Data Binding 的轉換器 Converter > 字串為空值 Visibility

當我們使用 XAML 資料繫結 Data Binding的時候,透過轉換器 Converter,可以很容易地透過來源資料 Source Data 的數據值,直接控制或者影響 XAML 控制項 (Element)的顯示特性或者顯示內容。

底下是我常用的一個轉換器(Converter),當來源資料的欄位為字串類型的時候,並且該字串的為空字串,這個時候,該轉換器會回傳 Visibility.Visible 或者 Visibility.Collapsed ,這樣,就可以控制項是否要顯示出來。

這樣的轉換器通常我會用於:若主題或者說明文字不存在的時候,不要顯示相對應的按鈕或者圖片,是個相當好用的轉換器


public sealed class EmptyStringToVisibilityConverter : IValueConverter
{
    public object Convert(object valueType targetTypeobject parameterstring language)
    {
        return (value is string && (string)value != ""? Visibility.Visible : Visibility.Collapsed;
    }
 
    public object ConvertBack(object valueType targetTypeobject parameterstring language)
    {
        return value is Visibility && (Visibility)value == Visibility.Visible;
    }
}


最後,記得當要在某個頁面中使用該轉換器的時候,要加入該轉換器當時的命名空間 namespace 宣告,並且定義該轉換器成為可用的 Key
<Converters:EmptyStringToVisibilityConverter x:Key="EmptyStringToVisibilityConverter"/>


<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:VulcanApp.Common"
    xmlns:Converters="using:VulcanApp.Converters"     
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d">
    <Converters:EmptyStringToVisibilityConverter x:Key="EmptyStringToVisibilityConverter"/>

好用的 XAML 資料繫結 Data Binding 的轉換器 Converter > bool Visibility

當我們使用 XAML 資料繫結 Data Binding的時候,透過轉換器 Converter,可以很容易地透過來源資料 Source Data 的數據值,直接控制或者影響 XAML 控制項 (Element)的顯示特性或者顯示內容。

底下是我常用的一個轉換器(Converter),當來源資料的欄位值為 True 或者 False 的布林值的時候,該轉換器會回傳 Visibility.Visible 或者 Visibility.Collapsed ,這樣,就可以控制項是否要顯示出來。


public class BooleanToVisibilityConverter : IValueConverter
{
    public object Convert(object valueType targetTypeobject parameterstring language)
    {
        return (value is bool && (bool)value == true? Visibility.Visible : Visibility.Collapsed;
    }
 
    public object ConvertBack(object valueType targetTypeobject parameterstring language)
    {
        return value is Visibility && (Visibility)value == Visibility.Visible;
    }
}

最後,記得當要在某個頁面中使用該轉換器的時候,要加入該轉換器當時的命名空間 namespace 宣告,並且定義該轉換器成為可用的 Key
<Converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>


<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:VulcanApp.Common"
    xmlns:Converters="using:VulcanApp.Converters"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d">
    <Converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>