UWP開發中Binding配合Converter的使用
UWP開發中Binding配合Converter的使用
MVVM模式的使用,簡化了UWP應用的開發,使層次更加分明。在寫xaml的時候,有些小技術還是很實用的;比如Converter,字面上理解是轉換器,那它到底是轉換什麼的?接觸過的可能知道它起的是型別轉換的作用,當你繫結的資料是一堆字母,顯示時卻想將它變成漢字,一種做法可以在資料繫結前將這些資料轉換成需要的文字,另一種做法就是使用Converter。
它有兩個好處:
1,保持原始資料的完整性,不破壞原有資料結構。
2,可以複用,別的地方需要直接將這個Converter拿過去就行。
先展示xaml程式碼,簡單的一個例子,資料來源給的是uint型別的數字,頁面展示將它超過10000用字母w表示,並保留2位小數顯示。Converter是一個.CS檔案,在頁面的資源中宣告後才可以使用,可以在page標籤下宣告。也可以在需要繫結資料的上一級父級宣告,下面我就是直接再上級Grid中宣告的。
...
xmlns:converter="using:TikTokBillboard.Model"
...
<Grid Grid.Row="2">
<Grid.RowDefinitions>
<RowDefinition Height="3*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.Resources>
<ResourceDictionary>
<converter:UnitConverter x:Key="Unit"/>
</ResourceDictionary>
</Grid.Resources>
<Grid x:Name="Digg" Grid.Row="0" Tapped="Digg_Tapped" HorizontalAlignment="Center" VerticalAlignment="Center">
<!--未點贊前為白色-->
<TextBlock Text="" Foreground="{Binding DiggColor,Mode=TwoWay}" FontFamily="Segoe MDL2 Assets" FontSize="24" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
<TextBlock Grid.Row="1" Text="{Binding DiggNum,Converter={StaticResource Unit}}" Grid.RowSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
先引用CS檔案,xmlns:converter="using:TikTokBillboard.Model",然後宣告UnitConverter(這個是我的Converter檔案的名稱),x:key的值的可以隨便寫,只要和下面使用時相同即可。
DiggNum是目標源,我們就是要把DiggNum的值轉化成簡寫w表示。
View Code
Converter的實現需要繼承IValueConverter介面,這個介面是系統的,我們要實現的是兩個方法Convert和ConvertBack。Convert方法是將資料來源繫結的值傳給該方法進行轉換處理,ConvertBack則是將頁面展示的值傳給資料來源時進行的轉換處理,一般情況只使用Convert方法。這兩個方法有相同的四個引數,value是資料來源繫結傳過來的值,targetType不用管它,parameter是轉換引數用於根據一個值不能進行明確轉換使用的,language就是語言,根據語言不同轉換成不同形態可以使用。
namespace TikTokBillboard.Model
{
/// <summary>
/// 單位轉換
/// </summary>
/// <param name="bytes"></param>
/// <returns></returns>
public class UnitConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
//預設為0
string size = "0";
//非0判斷
if (uint.Parse(value.ToString()) != 0 && uint.Parse(value.ToString()) >= 10000)
{
size = String.Format("{0:F2} {1}", Math.Round((1.00 * uint.Parse(value.ToString()) / 10000), 2), "w");
}
else
{
size = value.ToString();
}
return size;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
}
View Code
剩餘的程式碼部分就是根據MVVM隨便寫一下,新增個Model和ViewModel。
最後看一下實現效果:
文章參考 https://blog.csdn.net/weixin_30585437/article/details/98146909
相關文章
- Android開發教程 - 使用Data Binding(四)在Fragment中的使用AndroidFragment
- Android開發教程 - 使用Data Binding(三)在Activity中的使用Android
- win10 配合 phpstorm 使用 docker 開發Win10PHPORMDocker
- Android開發教程 - 使用Data Binding(八)使用自定義InterfaceAndroid
- 使用express配合rap配置vue本地開發環境ExpressVue開發環境
- MSDN最新的Windows 10 UWP開發文件連結Windows
- Android開發教程 - 使用Data Binding(五)資料繫結Android
- ClojureScript/OM 配合 descjop 開發筆記筆記
- 【UWP開發】如何判斷UWP應用在PC還是在xbox上執行?
- with 和 whereHas 的配合使用
- UWP 開發初階 Chapter 15 - UWP 軟體打包與上傳發布到應用商店的簡單流程介紹APT
- vscode 配合wsl做linux下的開發VSCodeLinux
- Laravel 配合 jwt 使用LaravelJWT
- UWP入門教程1——UWP的前世今生
- Android開發教程 - 使用Data Binding(七)使用BindingAdapter簡化圖片載入AndroidAPT
- Git 實際開發中的使用Git
- oracle開發中序列的使用(轉)Oracle
- Win10 UWP開發系列:使用VS2015 Update2+ionic開發第一個Cordova AppWin10APP
- 專案中如何配合VScode使用EslintVSCodeEsLint
- hubilder如何入後臺java配合開發webapp?JavaWebAPP
- 【轉載】WPF中Binding使用StringFormat格式化字串方法ORM字串
- Protobuf協議 Java & Js的配合使用協議JavaJS
- 聊聊 Interface 在 Laravel 開發中的使用Laravel
- 關於iOS開發中copy的使用iOS
- UWP開發入門(25)——通過Radio控制Bluetooth, WiFiWiFi
- 微軟把UWP定位成業務線應用程式開發平臺微軟
- Win10 UWP開發系列:開發一個自定義控制元件——帶數字徽章的AppBarButtonWin10控制元件APP
- 領域驅動和MVVM應用於UWP開發的一些思考MVVM
- Win10 UWP 開發系列:使用SplitView實現漢堡選單及頁面內導航Win10View
- [譯] Data Binding 庫使用的經驗教訓
- sqlmap使用,配合BurpsuiteSQLUI
- UWP中實現自定義標題欄
- Wireshark在多媒體開發中的使用
- Android開發教程 - 使用Data Binding Android Studio不能正常生成相關類/方法的解決辦法Android
- 使用ElementUI開發系統(介紹與開發中遇到的問題)UI
- GraphQL 配合 JWT 使用 —— Laravel RSS (二)JWTLaravel
- Linux下rz,sz與ssh的配合使用Linux
- 2020年的UWP(4)——UWP和等待Request的Desktop Extension